本頁說明全文搜尋的定義和運作方式。
全文搜尋可讓您建構應用程式,用於搜尋表格中的字詞、詞組或數字,而非只在結構化欄位中搜尋完全相符的項目。全文搜尋會將最新的交易一致性已提交資料傳回至應用程式。Spanner 全文搜尋功能還包括修正拼字錯誤、自動偵測搜尋輸入內容的語言,以及為搜尋結果排序。Spanner 會自動擴充文字搜尋,納入大致相符的字詞。
您必須針對要提供全文搜尋功能的任何資料欄建立搜尋索引。Spanner 會分析這些資料欄中的資料,找出要加入搜尋索引的個別字詞。一旦資料庫中新增或修改資料,Spanner 就會立即更新搜尋索引。
全文搜尋類型
- 基本文字搜尋:使用整個字詞或詞組或部分字詞來搜尋內容,以便取得可靠的結果。查詢述詞範例:
- 字詞完全符合 [tricolor rat terrier]
- 完全相符的字詞或詞組 [「rat terrier」]
- 含有以下任一字詞:[miniature OR standard]
- 相近字詞 [world AROUND(3) cup]
- 子字串 [start*]
- 數值搜尋:執行數值相等和不等搜尋。相等搜尋會比對數字。範圍和不等式搜尋會比對特定範圍內的數字。
- 以 n-gram 為基礎的搜尋:比對拼寫變化的字詞,包括專有名詞和名稱。這類搜尋功能還可協助比對查詢文字與拼錯的名稱、名稱的其他拼法,以及其他拼法變化的文字。
- 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
。應用程式可以直接將搜尋框中的使用者輸入內容,透過 rquery 語法饋送至 SQLSEARCH
函式。詳情請參閱「查詢搜尋索引」。 - Spanner 會使用搜尋索引,在不同欄位中尋找相符的文件。舉例來說,應用程式可以發出查詢,在標題中搜尋「cry」,歌詞中搜尋「so cold」,並以「Prince」做為歌手。
搜尋索引的其他用途
除了全文搜尋之外,搜尋索引還有許多用途,例如:
在陣列資料欄中索引元素。請考慮使用陣列資料欄的應用程式,以便儲存與項目相關聯的標記。有了搜尋索引,應用程式就能有效率地查詢包含特定標記的資料列。詳情請參閱「陣列權杖化」一文。
找出位於一組查詢條件交集內的資料。舉例來說,您可以使用任意一組屬性 (顏色、尺寸、品牌、評分等) 在目錄中搜尋產品。
使用數值搜尋條件,單獨使用或搭配全文搜尋條件。以下列舉一些搜尋索引可用於數值搜尋的情況:
- 與全文應用程式搭配使用時。例如,找出主旨為「Picture」且大小超過 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 分詞器。
- 瞭解搜尋索引。
- 瞭解全文搜尋查詢。