實作自動完成功能

當使用者輸入搜尋查詢時,Cloud Search 的自動完成功能會提供建議字詞來協助使用者。例如,建議可能是文件標題、搜尋運算子、搜尋運算子值,或是 Google Workspace 機構的名稱和電子郵件地址。

Autocomplete 會從已編入索引的文件標題中擷取詞組,並使用 n-gram 模型判斷要提供的建議 API。根據預設,文件標題中的詞組會顯示於自動完成功能中。您也可以將文字和列舉結構定義屬性標示為 is_suggestable,自動完成對應的屬性名稱和值。

Suggest API 會檢查搜尋查詢來找出有關查詢語言 (例如英文或西班牙文) 的提示,並據此安排結果的優先順序。要求的 languageCode 欄位也用於改善特定語言的建議。

情境示例

舉例來說,假設下列資料來源包含電影相關資料:

  • 資料來源包含 2 份文件。
  • 每份文件都有標題 (ItemMetadata.title) 和兩項屬性:genrecharacters
  • 第一份文件的標題為《Avengers Infinity War》和 genre=science fictioncharacters=Iron Man, Hulk
  • 第二份文件的名稱是《哈利波特》,含有 genre=Adventure, Fantasy andcharacters=Hermione, Harry Potter`

圖 1 說明如何從文件標題、屬性和屬性值中擷取自動完成建議。

兩份文件和產生的 ngram
圖 1. 用於自動完成功能的兩份文件和產生的 n 公克

從文件 1 中,我們從文件 1 中擷取出 Ngram (最多三元數)、「Avenitys」、「Infinity」、「War」、「Avengers Infinity」、「Infinity War」、「Avengers Infinity War」。 同樣地,在文件 2 中,我們產生了「哈利」、「波特」、「哈利波特」。

查詢這個資料來源時,假設使用者一開始輸入「h」。向使用者顯示的建議如下所示:

  • 哈利
  • 香草
  • 浩克
  • 哈利波特

假設使用者選取自動完成建議「Hermione」,而使用者的下一個按鍵動作為「a」字元。使用者看到的自動完成建議會是:

  • 赫爾米恩冒險
  • 香草動作
  • 赫爾米恩復仇者聯盟

自動完成功能會嘗試完成輸入的最後一個字詞 (或 ngram)。 在上例中,由於沒有以「hermione a」開頭的文字,因此只會將「a」展開為「adventure」、「action」和「avengers」。這項建議稱為「尾部建議」;僅自動完成輸入的最後一個字詞/n-gram。

Cloud Search 的自動完成功能最多可傳回 5 項文件內容相關建議和 2 項使用者建議。

根據預設,自動完成功能會顯示文件標題中的詞組。結構定義屬性必須明確標示為 is_suggestable,建議 API 自動完成相應的屬性名稱和值。

與 Autocomplete API 整合

如果您使用預設搜尋應用程式或嵌入式搜尋小工具,系統就能原生支援 Cloud Search 的自動完成功能,使用者無需進行任何額外操作。請注意,根據預設,文件標題中的詞組會顯示在自動完成功能中。結構定義屬性必須明確標示為 is_suggestable,建議 API 自動完成對應的屬性名稱和值。

建構自訂搜尋應用程式時,只要查詢 /query/suggest API 端點,即可使用自動完成功能。

限制

自動完成功能有下列限制:

  • 系統不支援透過結構定義中定義的 FilterOptions 限制 Cloud Search 的自動完成詞組,但下列內建篩選器除外:objectypemimetype 和類型篩選器。

  • 不支援查詢記錄式建議 (使用者先前在搜尋應用程式中執行的搜尋)

  • 你最多可以將 20 個屬性標示為 is_suggestable。如要提高此上限,請聯絡 Cloud Search 支援團隊。

  • 具有 exact_match_with_operator 的屬性無法使用搜尋運算子自動完成功能。

  • Cloud Search 的自動完成功能最多可傳回 5 項文件內容相關建議和 2 項使用者建議。

  • Cloud Search 的自動完成功能只會根據使用者可存取的文件提供詞組建議。