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 索引,请参阅 创建和管理 RUM 索引。
结合使用全文搜索和语义搜索
最强大的搜索实现通常结合使用基于 RUM 索引的全文搜索和向量搜索。使用混合搜索来融合语义理解和精确关键字匹配的优势,合并不同的结果集以进行全面排名。
例如,在电子商务应用中,您可以先使用基于 RUM 的全文搜索来查找包含特定关键字(例如“跑鞋”)的产品,然后使用向量搜索根据与用户更详细查询(例如“适合长距离训练的舒适鞋类”)的语义相似性查找结果。 然后,数据库使用倒数排序融合 (RRF) 算法将来自这两个搜索组件的排名结果融合到单个统一列表中,以生成最终排名。
如需详细了解如何使用这种混合方法,请参阅运行 混合向量相似性 搜索。
后续步骤
- 了解如何创建和管理 RUM 索引。
- 了解如何运行混合向量相似性搜索。