實作自動完成功能

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

自動完成功能會從已建立索引的文件標題中擷取片語,並使用 n 元模型,判斷要透過 Suggest API 提供的建議。根據預設,自動完成功能會顯示文件標題中的片語。您也可以將文字和列舉架構屬性標示為 is_suggestable,自動完成對應的屬性名稱和值。

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

範例情境

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

  • 資料來源包含 2 份文件。
  • 每份文件都有標題 (ItemMetadata.title) 和兩項屬性:genrecharacters
  • 第一份文件標題為「復仇者聯盟:無限之戰」,並顯示 genre=science fictioncharacters=Iron Man, Hulk
  • 第二份文件標題為「Harry Potter」,且 genre=Adventure, Fantasy andcharacters=Hermione, Harry Potter`

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

兩份文件和產生的 N 元語法
圖 1. 用於自動完成的兩個文件和產生的 n 元語法

從文件 1 中,我們擷取 n 元語法 (最多三元語法)「復仇者聯盟」、「無限」、「之戰」、「復仇者聯盟無限」、「無限之戰」、「復仇者聯盟無限之戰」。同樣地,從文件 2 中,我們產生「哈利」、「波特」、「哈利波特」。

查詢這個資料來源時,假設使用者先輸入「h」。使用者會看到下列建議:

  • Harry
  • Hermione
  • 浩克
  • 哈利波特

假設使用者選取自動完成建議「Hermione」,且使用者下一個按鍵輸入的字元是「a」。系統會向使用者顯示下列自動完成建議:

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

自動完成功能會嘗試完成您輸入的最後一個字詞 (或 n 元語法)。在先前的範例中,由於沒有以「hermione a」開頭的文字,因此系統只會將「a」擴展為「adventure」、「action」和「avengers」。這項建議稱為尾部建議,只會自動完成輸入的最後一個字詞/n 元語法。

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 的自動完成功能只會根據使用者有權存取的檔案,建議相關詞組。