欄位設定方式

本頁面說明如何設定結構化資料、含中繼資料的非結構化資料,或含自訂結構化屬性的網站資料的應用程式架構欄位。

欄位設定可協助判斷 Agent Search 如何在結果中使用欄位。您可以在Google Cloud 控制台中使用「結構定義」分頁設定欄位。

只有包含結構化資料或內含中繼資料的非結構化資料的資料儲存庫,才能設定欄位。

欄位設定

下列欄位設定適用於搜尋或建議資料中的許多欄位類型,但並非所有資料類型都適用。結構定義包含個別欄位的多項欄位設定,下表則列出可套用至結構定義中欄位的設定。強烈建議您為這些欄位設定使用結構化資料:

設定 定義 目的 用途範例
可建立索引

將欄位設為可建立索引,即可在文件中的結構化欄位上執行篩選、提升和分面等作業。

類型為 Object 的欄位無法設為 Indexable

將欄位標示為 Indexable 可加快查詢速度。

請注意,將欄位標示為 Indexable 會增加搜尋索引的大小,並可能減緩建立索引的速度。

在飯店資料存放區中,您可以將 hotel_chain 等欄位設為可建立索引,這樣就能對 hotel_chain 套用排名、篩選和提升作業。舉例來說,您可以套用篩選器,讓搜尋結果只顯示包含已篩選飯店連鎖店的結果。
可供搜尋

最有可能與搜尋相關的欄位會標示為 Searchable。欄位可供搜尋,但不一定能建立索引或擷取。

只有內含文字值的欄位可以標示為可供搜尋。因此,數值價格欄位可編入索引 (用於篩選或切面),但無法做為全文搜尋。

將欄位設為「可搜尋」可提高搜尋查詢中該欄位的召回率,讓使用者透過查詢這些欄位中的文字來尋找網頁等內容。將欄位標示為可搜尋,系統就能套用排名。因此,如果將過多欄位標示為可搜尋,可能會導致排名演算法過度飽和,傳回過多結果,進而影響搜尋精確度,導致傳回不相關的搜尋結果。

您可以對可搜尋的欄位套用相對權重,但由於預設值相當完善,因此很少需要這麼做。請參閱下方的「加權可搜尋的欄位」。

網際網路服務供應商的支援單處理系統會將每張支援單儲存為結構化文件。如果這些文件包含可搜尋的文字欄位 (例如 issue_descriptionresolution_notes),支援服務專員可以查詢與這些欄位內容相關的問題,例如「數據機重設後如何修正網速緩慢的問題」。系統接著會顯示包含任一搜尋字詞的文件,包括 modeminternetspeed,這些字詞可能出現在 issue_descriptionresolution_notes 欄位中,也可能同時出現在兩個欄位。

可比對前置字串
(預覽)

允許在篩選運算式中使用 STARTS_WITH 運算子,比對文字欄位的前置字串。只有 StringString Array 類型的欄位可以設為「前置字串可比對」。

詳情請參閱下方的「開放欄位以供前置字元和部分比對」。

將欄位設為可比對前置字元,搜尋引擎就能比對欄位值前置字元的查詢字串。這項功能特別適合比對階層式 ID、路徑或代碼,因為這些字串的開頭已知。前置字元比對功能僅限於正規化欄位值的前 12 個字元,且會增加搜尋索引的大小。您最多只能將 10 個欄位設為可比對前置字元。

您有一個欄位 (ticket_id),使用的格式類似於 <country-code><city-code><number>。範例包括 UKLON100UKMAN100UKMAN101USNY200。如要找出所有來自英國曼徹斯特的票券,您可以將 ticket_id 欄位設為可比對前置字元,然後使用 ticket_id: STARTS_WITH("UKMAN") 篩選器,這會傳回 UKMAN100UKMAN101

部分可比對
(預覽版)

允許在篩選器運算式中使用 CONTAINS 運算子,對文字欄位進行部分字串比對。只有 StringString Array 類型的欄位可以設為部分可比對。

詳情請參閱下方的「開放欄位以供前置字元和部分比對」。

將欄位設為可部分比對,即可在欄位內啟用以符記為準的比對功能,讓使用者在只知道部分欄位值時,也能找到內容。搜尋引擎會比對查詢權杖與欄位值中的權杖,不考慮順序。請注意,將欄位標示為部分可比對會增加搜尋索引的大小。您最多只能將 10 個欄位設為可部分比對。

您想篩選歐洲的區域。region 名稱包含 Central EuropeEastern Europe。如果篩選條件是 region: ANY("Europe"),系統不會找到任何相符項目。不過,如果 region 欄位設為部分相符,您可以使用 region: CONTAINS("Europe") 進行篩選,並取得 Central EuropeEastern Europe 的相符項目。

可做為動態 facet 提供情境感知篩選器,協助使用者更精準地搜尋。將欄位設為 Dynamic Facetable,系統就能根據欄位中的不重複值,自動產生互動式篩選器 (切面)。 將欄位設為 Dynamic facetable,使用者就能直接選取從已擷取資料衍生的類別或屬性,動態縮小搜尋結果範圍,不必手動預先定義每個可能的篩選器選項。這可讓使用者將搜尋範圍縮小至非常具體的網頁內容。
搭配使用 Dynamic FacetableSearchable,可獲得更出色的結果,進而提升搜尋的召回率,以及提供給使用者的 facet 品質。
系統會擷取公司內部知識庫中的網頁 (例如人資政策),以及 departmentdocument_typelast_modified_date 等資料。如果這些欄位標記為 dynamic facetable,員工搜尋「費用報銷」等字詞時,系統會根據找到的相關結果動態產生互動式篩選器。在這種情況下,網頁介面可能會顯示「部門:財務、旅遊」、「文件類型:政策、常見問題」或「上次修改日期:本季、去年」等切面。
可擷取 當搜尋查詢命中相符內容時,搜尋引擎可以提取可擷取的欄位值,以顯示或用於應用程式,也就是說,原始文件中的資訊會顯示為搜尋結果的一部分。重要欄位 (文件的專屬 ID) 會設為可擷取。 可擷取的欄位會區分可顯示值的欄位,以及僅用於搜尋邏輯但原始值不應向使用者顯示的欄位,藉此提供搜尋環境。 在商家網站上搜尋產品時,product_idnamepriceimage_url 通常會設為可擷取的欄位。另一方面,internal_tracking_code 只能為了管理目的建立索引和篩選,無法在公開搜尋結果中擷取。
可完成 允許將欄位內容做為搜尋查詢建議。詳情請參閱「設定自動完成功能」。

啟用這項設定後,系統就能根據使用者輸入的內容,即時提供查詢建議。這項功能可引導使用者找到相關內容,並加快搜尋程序。使用自然語言篩選等因素可能會影響這項效能。

如果為 completableproduct_namebrandcategory 欄位設定 Tech,當使用者輸入「Tech」時,自動完成建議會顯示:
  • TechCo (來自 brand 欄位)
  • TechCo UltraBook X1 (來自「product_name」欄位)
  • 技術 GameMaster Pro (category 欄位的其他產品)
可篩選 允許建議功能使用欄位篩選建議結果,決定使用者看到的搜尋結果。如要瞭解如何篩選最佳化建議,請參閱「篩選最佳化建議」。 將欄位設為 Filterable 有助於為使用者自訂建議。請注意,這會套用篩選限制 依語言和戲劇篩選的篩選器設定可能如下所示:language_code: ANY("en", "fr") OR categories: ANY("drama")

常用設定的差異

可建立索引、可搜尋和可擷取欄位設定之間存在主要差異。下表摘要列出這些差異。

功能 可建立索引 可供搜尋 可擷取
主要角色 讓搜尋引擎可存取欄位內容 允許對欄位內容進行全文查詢 允許在搜尋結果中傳回欄位值
分析 系統會處理內容並建立索引。 通常會經過廣泛的詞彙分析。 系統會原封不動地儲存值,以供顯示。
Can it be...
...可供搜尋? 是 (通常是先決條件) 不適用 不一定 (可擷取,但無法搜尋)
...可擷取? 不一定 不一定 不適用
...Filterable/Sortable/Facetable? 是 (通常也是這些項目的先決條件) 無法直接建立,這些是獨立屬性,通常以可建立索引的欄位為基礎。 不會直接影響,這些屬性與欄位的索引和查詢方式有關,而不只是顯示方式。

在實務上,許多對使用者體驗至關重要的欄位 (例如名稱、說明和識別資訊) 通常會設為 indexablesearchableretrievable

限制

欄位設定有下列限制:

  • 您最多可將 50 個欄位設為可建立索引、可供搜尋、可擷取或動態商情項目。
  • 如要將欄位設為動態商情項目,必須先將其設為可建立索引。
  • 如要變更可建立索引的設定,您必須重新建立資料索引。這項作業可能需要數小時,尤其是大型資料儲存庫。

如果您要為媒體搜尋應用程式設定欄位,並想瞭解結構定義中的欄位詳細資訊,請參閱「關於媒體文件和資料存放區」。

更新欄位設定

如要更新欄位設定,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「AI Applications」頁面。

    AI 應用程式

  2. 按一下要編輯的應用程式名稱。

  3. 按一下 [Data] (資料)。

  4. 按一下 [Schema] (結構定義) 分頁標籤。這個分頁會顯示目前的欄位設定。

    如果資料儲存庫包含基本網站資料沒有中繼資料的非結構化資料,就不會看到「結構化資料」分頁。

  5. 按一下 [編輯]

  6. 選取或清除需要更新的欄位設定。系統不支援部分欄位設定。舉例來說,數值欄位無法設為「可搜尋」

  7. 按一下 [Save] (儲存) 套用您的變更。

如果將欄位標示為可搜尋,您可以指定權重,指出該欄位在搜尋結果中的相對重要性。在大多數情況下,您不需要為個別欄位指定權重,因為預設權重效果良好。

不過,在某些情況下,您可能需要調整權重,例如:

  • 您要從現有搜尋平台遷移資料,該平台已使用加權欄位。

  • 預設權重無法提供令人滿意的搜尋結果時。具體來說,當您有許多可搜尋的欄位,且某些欄位明顯比其他欄位重要時,就可能發生這種情況。

    或許摘要是搜尋時最重要的欄位,因此您想優先處理該文字。

    或者,結構化資料含有高度相關的關鍵字,可準確預測搜尋結果,但由於這個欄位比其他欄位短得多,因此影響力往往會被較長的欄位掩蓋。提高權重可確保該目標發揮預期影響。

重量等級

權重會分級如下:

欄位重要性 說明
非常低 系統在合併所有欄位的評分時,仍會考量的低值。如果想進一步降低權重,讓效果可忽略不計,請不要將該欄位標示為可搜尋。
低於預設值的權重。
預設 可搜尋欄位的標準權重。在大多數情況下,這個權重都能提供相當不錯的效能。
權重明顯高於預設值。
非常高 權重占多數。通常最多只能為一個欄位保留這項功能。

更新結構定義並重新建立索引

如要為可搜尋的欄位新增權重,必須更新結構定義,然後重新為資料儲存庫中的資料建立索引。更新結構定義需要數小時,而且沒有可靠的指標可判斷索引作業何時完成,因此您需要高估索引時間。

設定欄位的權重等級

設定欄位權重等級的作業可能很繁瑣,因為您只能進行小幅變更,並在變更後仔細檢查搜尋結果,確認是否造成非預期的影響。每次變更後,您必須等待重新建立索引完成,才能評估變更的影響。

搜尋欄位權重只能透過 API 設定。這項功能不適用於 Google Cloud 控制台。

如要設定權重,請透過 API projects.locations.dataStores.schemas.patch 方法更新資料儲存庫的架構。

  1. 如果還沒有結構定義,請按照「查看結構定義」一文中的操作說明取得結構定義。

  2. 按照操作說明以程式輔助方式更新結構定義。為一或多個可搜尋的欄位新增權重,如下列範例所示:

    "summary": {
       "type": "string",
       "searchable": true,
       "weight": "high"
     },
     "uri": {
       "type": "string",
       "searchable": true,
       "weight": "low"
     },
    

    在本例中,summary 欄位設為高於正常值的權重,uri 欄位則設為較低的權重。如要將權重設回預設值,請設為 default

    weight 參數的有效值為:

    • very_low
    • low
    • default
    • high
    • very_high
  3. 等待重新建立索引完成,然後測試搜尋行為。

提供可供前置字元和部分比對的欄位 (搶先體驗)

如果是 string 類型的欄位,您可以編輯結構定義,讓欄位可供前置字元比對或部分比對。這樣您就能在篩選運算式中使用 STARTS_WITHCONTAINS

更新結構定義並重新建立索引

如要讓欄位支援前置字元或部分相符的搜尋結果,必須更新結構定義,並重新建立資料儲存庫中的資料索引。更新結構定義需要數小時,而且沒有可靠的指標可判斷索引建立作業何時完成,因此您需要高估索引建立時間。

更新前置字元和部分相符的結構定義

如要指定可進行前置字元比對或部分比對的欄位,請透過 API projects.locations.dataStores.schemas.patch 方法更新資料儲存庫的結構定義。

  1. 如果還沒有結構定義,請按照「查看結構定義」一文中的操作說明取得結構定義。

  2. 按照指示以程式輔助方式更新結構定義。 在結構定義中將可比對的參數設為 true,如以下範例所示:

    "zone": {
       "type": "string",
       "searchable": true,
       "prefixMatchable": true
     },
     "region": {
       "type": "string",
       "searchable": true,
       "partialMatchable": true
     },
     "model": {
       "type": "string",
       "searchable": true,
       "prefixMatchable": true,
       "partialMatchable": true
     },
    

    在本範例中,zone 欄位設為可進行前置字元比對。篩選運算式最多可使用 12 個字元 (不區分大小寫),用來比對欄位值。region 欄位設為可部分比對。

  3. 等待重新建立索引完成。

前置字串比對詳細資料

在 Agent Search 中,前置字元比對功能可根據欄位值是否以特定字串開頭,篩選搜尋結果。這項功能由 STARTS_WITH 運算子提供支援,且目標文字欄位必須在結構定義中設定為 prefixMatchable

標準化和比對邏輯

為提升效能並確保一致性,系統會對欄位值 (建立索引期間) 和查詢字串 (搜尋期間) 進行特定正規化程序。

  1. 轉換為小寫:所有字元都會轉換為小寫,因此比對時不會區分大小寫。

  2. 截斷為 12 個字元:系統只會考慮字串的前 12 個字元。超過這個限制的字元會遭到忽略,不會用於前置字元比對。

運作方式

在建立索引時,系統會為標示為 prefixMatchable 的欄位,產生前 12 個字元的前置字元權杖。以 asia-south1-c 為例,索引會儲存 aasasiasiaasia- 等權杖,最多到第 12 個字元 (asia-south1-)。

在查詢時,提供給 STARTS_WITH 運算子的字串也會轉換為小寫,並截斷為 12 個字元。然後系統會比對查詢與儲存的前置字元權杖。

範例

以下範例說明 12 個字元的正規化如何影響搜尋結果:

  • 廣泛比對STARTS_WITH("A") 比對開頭為「a」的任何值 (不區分大小寫),例如 asiaaustraliaafrica

  • 部分前置字元STARTS_WITH("asia-south") 會同時比對 asia-south1-aasia-southeast1-b,因為兩者都以指定的 10 個字元開頭。

  • 截斷行為:由於系統只會比對前 12 個字元,因此 STARTS_WITH("asia-south1-a") 會比對 asia-south1-c 的欄位值。這是因為兩個字串都會正規化為相同的前 12 個字元:asia-south1-

部分比對的詳細資料

在 Agent Search 中,部分相符功能可根據欄位值是否包含特定字詞或權杖來篩選結果。這項功能由 CONTAINS 運算子提供支援,且目標文字欄位必須在結構定義中設定為 partialMatchable

正規化和符記化邏輯

Agent Search 會將欄位值 (在建立索引期間) 和查詢字串 (在搜尋期間) 正規化並標記化:

  • 轉換為小寫:Agent Search 會將字元轉換為小寫,因此比對時不會區分大小寫。

  • 斷詞:Agent Search 會使用空格和其他字元做為分隔符號,將字串拆分為個別詞元 (字詞)。

    • 標準分隔符:空格和常見標點符號會做為分隔符,包括連字號 (-)、斜線 (/)、逗號 (,)、句號 (.)、星號 (*)、大括號 ({ })、方括號 ([ ])、圓括號 (( )) 和單引號 (')。

    • 非分隔符:連接號 (&) 和底線 (_) 不會做為分隔符。系統會將以這些符號連結的字元視為單一代碼。

    • 電子郵件分隔符號 (@)@ 符號是特殊分隔符號,可協助系統辨識電子郵件地址。系統會為個別元件和合併表單產生權杖。舉例來說,它會將 support+tier1@example.com 權杖化為 supporttier1examplecomsupport+tier1@example.comsupport@example.com

運作方式

在建立索引時,系統會針對標示為 partialMatchable 的欄位,將欄位值正規化並權杖化,然後將產生的權杖儲存在索引中。舉例來說,如果欄位值為「25-meter, outdoor, swimming pool」,系統會將其權杖化為「[25, meter, outdoor, swimming, pool]」。

在查詢時,提供給 CONTAINS 運算子的字串會經過相同的正規化和權杖化程序。搜尋引擎接著會驗證所有查詢權杖是否與該欄位的儲存權杖相符。權杖順序不會影響結果。

範例

以下範例說明權杖化如何影響部分相符結果:

  • 基本符記比對:如果欄位值為 25-meter, outdoor, swimming pool,則 CONTAINS("Outdoor pool") 的篩選條件會相符。系統會將查詢權杖化為 [outdoor, pool],兩者都會出現在欄位的權杖中。

  • 順序獨立性:篩選條件 CONTAINS("pool outdoor") 也會比對欄位值 25-meter, outdoor, swimming pool,因為系統會檢查每個權杖是否存在,而不會考量權杖順序。

  • 電子郵件地址比對:如果欄位儲存電子郵件地址,由於 @ 符號的特殊權杖化方式,CONTAINS("support")CONTAINS("example.com")CONTAINS("support@example.com") 等篩選條件都會成功比對。support+tier1@example.com

後續步驟