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 索引的全文搜尋和向量搜尋。使用混合型搜尋,結合語意理解和完全比對關鍵字的優勢,合併不同的結果集,進行全面排名。
舉例來說,在電子商務應用程式中,您可以先使用 RUM 進行全文搜尋,找出含有「慢跑鞋」等特定關鍵字的產品,然後使用向量搜尋,根據語意相似度找出與使用者更詳細查詢內容 (例如「適合長距離訓練的舒適鞋款」) 相符的結果。接著,資料庫會使用倒數排名融合 (RRF) 演算法,將兩個搜尋元件的排名結果融合成單一統一清單,產生最終排名。