## pg_textsearch:PostgreSQL 的现代排序文本搜索
pg_textsearch 是一个生产就绪的 PostgreSQL 扩展 (v1.0.0),它使用 BM25 算法提供快速、可扩展的排序文本搜索。它可以通过简单的 `ORDER BY content <@> '搜索词'` 语法轻松实现。
**主要特性:**
* **BM25 排序:** 可配置的 `k1` 和 `b` 参数,用于微调相关性。
* **PostgreSQL 集成:** 与现有的文本搜索配置(英语、法语、德语等)兼容。
* **性能:** 针对 top-k 查询进行了 Block-Max WAND 优化,支持并行索引构建和分区表。
* **兼容性:** 支持 PostgreSQL 17 & 18。
* **安装:** 克隆 GitHub 仓库后,使用 `make install` 进行简单安装。需要在 `postgresql.conf` 中将 `pg_textsearch` 添加到 `shared_preload_libraries`。
**用法:** 使用 `CREATE INDEX ... USING bm25(column) WITH (text_config='...')` 创建 BM25 索引,然后使用 `<@>` 运算符查询。请记住分数是负数(越小越好)。可以通过 `to_bm25query()` 显式指定索引。
**重要注意事项:** 使用 WHERE 子句进行预过滤可以显著提高性能。该扩展利用 memtable 架构并支持段压缩,以优化查询速度。详细文档和调试功能可用于高级用例。