全文搜索概览

选择文档版本:

全文搜索 (FTS) 可让您识别满足查询条件的自然语言文档。这种方法比标准字符串匹配更有效,因为它考虑了语言细微差别,例如忽略“the”等常见字词,并匹配字词的不同形式,例如“run”“running”或“ran”。

AlloyDB Omni 支持所有全文搜索功能,包括对 GIN 和 GiST 索引的支持。

如需有效实现全文搜索 (FTS),您应了解 PostgreSQL 如何处理和搜索文本。搜索单元(即文档)通常是文本列或行中的列组合。索引构建过程会解析此文档,以将字词(或词位,即字词的基本形式)与行相关联。

此过程涉及一个预处理流水线,该流水线通过以下方式将原始文本转换为可搜索的格式:

  • 将文本拆分为词元。
  • 移除常见停用词。
  • 将字词标准化为词根形式;例如,“run”是“run”“runs”“running”和“ran”的词位。

使用全文搜索还需要您了解专门的数据类型、运算符和各种索引策略,包括内置 PostgreSQL 索引和高性能 RUM 索引。

PostgreSQL 使用两种主要数据类型和一个匹配运算符来管理 FTS:

  • tsvector:以可搜索格式表示文档,即不同词位的排序列表。
  • tsquery:表示搜索字词,包括可让您组合词位的布尔运算符。
  • @@:检查 tsvector 是否与 tsquery 匹配,从而实现语言感知搜索。

AlloyDB Omni 支持内置 PostgreSQL 支持的所有全文搜索索引类型。索引的选择取决于搜索速度、索引构建时间、更新速度以及所需的特定搜索功能(例如短语搜索或相关性排名)之间的平衡。

如需详细了解如何在 AlloyDB Omni 中创建和使用 RUM 索引,请参阅在 AlloyDB for PostgreSQL 中创建和管理 RUM 索引。

最强大的搜索实现通常会将使用 RUM 索引的全文搜索与 Vector Search 相结合。使用混合搜索,将语义理解和关键字匹配的优势相结合,合并不同的结果集,以实现全面的排名。

例如,在电子商务应用中,您可以先使用全文搜索和 RUM 查找包含特定关键字(如“跑鞋”)的产品,然后使用 Vector Search 根据与用户更详细查询(如“适合长距离训练的舒适鞋履”)的语义相似度查找结果。然后,数据库使用倒数排序融合 (RRF) 算法将两个搜索组件的排名结果融合到一个统一列表中,从而生成最终排名。

后续步骤