使用该类型的 Postgres 原生全文搜索tsvector有两个主要问题:
性能:在大表上搜索和排名很慢。当表增长到数百万行时,单个全文搜索可能需要几分钟的时间。
功能:Postgres 不支持模糊搜索、相关性调整或 BM25 相关性评分等操作,而这些操作是现代搜索引擎的基础。
pg_bm25旨在弥合 Postgres 全文搜索的本机功能与 ElasticSearch 等专业搜索引擎的本机功能之间的差距。目标是消除将 ElasticSearch 这样繁琐的服务引入数据堆栈的需要。
一些功能pg_bm25包括:
100% Postgres 原生,对外部搜索引擎零依赖;
构建于 Tantivy 之上,Tantivy 是 Apache Lucene 搜索库的基于 Rust 的替代品;
与Postgres 的内置全文搜索和排序功能tsquery和相比,超过 100 万行的查询时间快了 20 倍ts_rank;
支持模糊搜索、聚合、突出显示和相关性调整;
相关性评分使用 BM25,与 ElasticSearch 使用的算法相同;
实时搜索 - 新数据可立即搜索,无需手动重新索引。
pg_bm25站在几个开源巨头的肩膀上。这篇博文的目的是认识这些项目并分享pg_bm25其构建方式,为开发人员提供 Postgres 数据库的简单性和世界级搜索引擎的搜索功能。
pg_bm25 | #扩展