全文搜尋總覽

全文檢索 (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 索引的全文搜尋和向量搜尋。使用混合型搜尋,結合語意理解和完全比對關鍵字的優勢,合併不同的結果集,進行全面排名。

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

後續步驟