本頁說明全文搜尋功能及其運作方式。
透過全文搜尋,您可以建構應用程式,在表格中搜尋字詞、詞組或數字,而不只是在結構化欄位中搜尋完全相符的項目。全文搜尋會將最新的交易一致性已提交資料傳回應用程式。Spanner 全文搜尋功能也包括拼字校正、自動偵測搜尋輸入內容的語言,以及搜尋結果排名。Spanner 會自動擴展文字搜尋範圍,納入近似字詞比對。
您必須在要提供全文搜尋的任何資料欄上建立搜尋索引。Spanner 會分析這些資料欄中的資料,找出要加入搜尋索引的個別字詞。只要資料庫中提交了新的或修改過的資料,Spanner 就會立即更新搜尋索引。
全文搜尋類型
- 基本文字搜尋:使用完整或部分字詞搜尋內容,確保搜尋結果的可靠性。查詢述詞範例:
- 字詞完全符合 [tricolor rat terrier]
- 完全相符的字詞或詞組 ["rat terrier"]
- 含有以下任何字詞:[迷你或標準]
- 鄰近的字詞 [world AROUND(3) cup]
- 子字串 [start*]
- 數字搜尋:執行數字相等和不等的搜尋。 等號搜尋會比對數字。範圍和不等式搜尋會比對特定範圍內的數字。
- 以 n 元文法為基礎的搜尋:比對拼字變體字詞,包括專有名詞和名稱。這類搜尋也有助於比對查詢文字與拼錯的名稱、拼法不同的名稱,以及其他拼法變體。
- Soundex 搜尋:比對發音相似的字詞。
全文搜尋功能
Spanner 全文搜尋功能提供以下功能:
- 搜尋結果排名:計算分數,評估查詢與文件的相符程度 (例如,為 column_A 加上較高的權重)。使用 SQL 運算式自訂排名。
- 摘要:醒目顯示搜尋結果中相符的文字。
- 全球支援:自動支援不同語言的權杖化,包括 CJK 分段。手動指定語言可讓您進行額外的微調。
- 治理:找出特定字詞的所有出現位置。
- 拼字修正:自動修正查詢中的錯別字,以比對儲存空間中拼字正確的字詞。舉例來說,如果使用者搜尋「girafe」,搜尋結果會顯示含有「giraffe」的文件。
- 新增比對內容相關的同義字,包括停用字:自動新增比對內容相關的同義字,提高搜尋結果的召回率。例如,「the house」會比對出「this house」,「cat picture」則會比對出「kitty picture」。
- 根據情境將數字轉換為文字,或將文字轉換為數字:將數字的文字版本與數字表示法相互對應,舉例來說,「five cats」會比對到「5 cats」。
- 自動轉換為複數:將「cat」比對為「cats」。
全文搜尋概念
全文搜尋有以下重要概念:
- 文件是指特定資料列中的可搜尋資料。
- 符記是指儲存在搜尋索引中的文件中的每個字詞。
- 斷詞程序會將文件分割為符記。
- 權杖化工具是權杖化作業使用的 SQL 函式。
- 反向索引會儲存權杖。使用 SQL 查詢搜尋反向索引。
全文搜尋的用途範例
如要瞭解全文搜尋,請參考以下應用程式,該應用程式會使用資料庫儲存每位歌手的歌曲。每一列都是一首歌曲。每首歌曲都包含標題、歌詞、歌手和專輯等資料欄。應用程式會使用全文搜尋功能,讓使用者以自然語言查詢搜尋歌曲:
- 搜尋功能支援使用
OR
運算子的查詢,例如Prince OR Camille
。應用程式可直接將搜尋框中的使用者輸入內容,饋送到 SQLSEARCH
函式 (使用 rquery 語法)。詳情請參閱「查詢搜尋索引」。 - Spanner 會使用搜尋索引,在不同欄位中尋找相符的文件。舉例來說,應用程式可以發出查詢,在標題中搜尋「cry」,歌詞中搜尋「so cold」,歌手則為「Prince」。
搜尋索引的其他用途
除了全文搜尋,搜尋索引還有許多用途,例如:
為陣列資料欄中的元素建立索引。假設某個應用程式使用陣列資料欄來儲存與項目相關聯的標記。有了搜尋索引,應用程式就能有效率地查閱含有特定標記的資料列。詳情請參閱陣列權杖化。
找出位於一組查詢條件交集處的資料。舉例來說,您可以使用任意一組屬性 (顏色、尺寸、品牌、評分等),在目錄中搜尋產品。
使用數字搜尋條件,單獨使用或與全文條件合併使用。以下列舉一些適合使用搜尋索引進行數字搜尋的範例:
- 與全文應用程式合併使用時。舉例來說,如要尋找主旨為「圖片」且大小超過 1 MB 的電子郵件。
- 當該條件是先前所述條件交集的一部分時。舉例來說,如要尋找
color = "yellow" AND size = 14 AND rating >= 4.5
的產品。 - 搜尋數字資料欄的交集時,舉例來說,假設有個資料表儲存活動的開始和結束時間。搜尋索引可有效率地實作查詢,尋找在特定時間點發生的事件:
start_time <= @p AND end_time > @p
。
詳情請參閱數字索引。
全文搜尋步驟
在 Spanner 中,全文搜尋需要下列步驟:
- 使用 Spanner 權杖化函式 (例如
TOKENIZE_SUBSTRING
) 將文件權杖化。詳情請參閱權杖化。 - 使用
CREATE SEARCH INDEX
DDL 陳述式建立搜尋索引,以保留權杖。詳情請參閱「搜尋索引」。 - 使用 Spanner
SEARCH
函式查詢搜尋索引中的文件。詳情請參閱「查詢總覽」。 - 使用 Spanner
SCORE
函式,為查詢結果排序。詳情請參閱「搜尋結果排名」。
限制
- 全文搜尋不支援 Assured Workloads。
定價
使用全文搜尋時,Spanner 不會收取額外費用,但由於需要額外的運算和儲存資源,實作全文搜尋會增加費用。
詳情請參閱「Spanner 定價」。
後續步驟
- 瞭解權杖化和 Spanner 權杖化工具。
- 瞭解搜尋索引。
- 瞭解全文搜尋查詢。