5个版本 (破坏性更新)
0.4.0 | 2023年9月12日 |
---|---|
0.3.0 | 2023年9月12日 |
0.2.0 | 2023年9月12日 |
0.1.0 | 2023年9月11日 |
0.0.0 | 2023年9月11日 |
#8 in #ranking
82KB
2K SLoC
概述
pg_bm25
是一个PostgreSQL扩展,它通过使用Okapi BM25算法(全文搜索的最先进排名函数)来实现全文搜索。它使用 pgrx
在Rust中构建,并支持PostgreSQL 11及以上版本。
开发
先决条件
在开发扩展之前,请确保您已安装Rust(版本>1.70),最好通过 rustup
安装(我们观察到在macOS上通过Homebrew安装Rust存在问题)。
然后,安装并初始化 pgrx
cargo install --locked cargo-pgrx
cargo pgrx init
运行扩展
首先,启动 pgrx
cargo pgrx run
这将启动到Postgres的交互式连接。在Postgres内部,通过运行以下命令创建扩展:
CREATE EXTENSION pg_bm25;
您可以通过以下方式验证扩展函数是否已安装:
\df
现在,您已可以访问所有扩展函数。
索引表
默认情况下, pg_bm25
扩展创建了一个名为 paradedb.mock_items
的表,您可以使用它进行快速实验。
要索引表,请使用以下SQL命令:
CREATE TABLE mock_items AS SELECT * FROM paradedb.mock_items;
CREATE INDEX idx_mock_items ON mock_items USING bm25 ((mock_items.*));
索引完成后,您可以在它上运行各种搜索函数。
执行搜索
在已索引的表上执行搜索查询
SELECT *
FROM mock_items
WHERE mock_items @@@ 'description:keyboard OR category:electronics OR rating>2';
修改扩展
如果您对扩展代码进行了更改,请按照以下步骤更新它:
- 重新编译扩展
cargo pgrx run
- 重新创建扩展以加载最新更改
DROP EXTENSION pg_bm25;
CREATE EXTENSION pg_bm25;
测试
要运行单元测试套件,请使用以下命令:
cargo pgrx test
这将运行 /src
中定义的所有单元测试。要添加新的单元测试,只需在相关文件中添加测试即可,使用 #[cfg(test)]
属性。
要运行集成测试套件,首先使用以下命令在您的系统上安装扩展:
cargo pgrx install
每次您对扩展进行更改并希望其在集成测试套件中反映出来时,都需要运行此命令。然后,使用以下命令运行测试:
./test/runtests.sh
这将创建一个临时数据库,使用在fixtures.sql
中定义的SQL命令初始化它,并在/test/sql
中对其运行测试。要添加新的测试,只需将新的.sql
文件添加到/test/sql
,并添加相应的.out
文件到/test/expected
以存储预期的输出,测试套件将自动识别。
打包
扩展作为构建过程的一部分被打包到我们的Docker镜像中。如果您想本地打包扩展,可以通过运行以下命令来实现:
cargo pgrx package [--test]
依赖项
~43MB
~825K SLoC