FacetSpec

用於執行多面向搜尋的 facet 規格。

JSON 表示法
{
  "facetKey": {
    object (FacetKey)
  },
  "limit": integer,
  "excludedFilterKeys": [
    string
  ],
  "enableDynamicPosition": boolean
}
欄位
facetKey

object (FacetKey)

這是必要旗標,構面鍵規格。

limit

integer

這個 Facet 傳回的 Facet 值數量上限。如未指定,則預設值為 20。允許的最大值為 300。如果值超過 300,系統會強制設為 300。如要在醫療照護搜尋中進行彙整,當 [FacetKey.key] 為「healthcare_aggregation_key」時,系統會將限制覆寫為 10,000,無論您在此設定的值為何。

如果這個欄位為負數,系統會傳回 INVALID_ARGUMENT

excludedFilterKeys[]

string

分面時要排除的金鑰清單。

根據預設,除非 FacetKey.key 列在這個欄位中,否則不會從篩選器中排除。

在這個欄位中列出 Facet 鍵,即使 Facet 值已從搜尋結果中篩除,仍會顯示為 Facet 結果。使用這個欄位不會影響傳回的搜尋結果。

舉例來說,假設有 100 份文件的顏色 Facet 為「紅色」,200 份文件的顏色 Facet 為「藍色」。如果查詢包含「color:ANY("Red")」篩選條件,且「color」是 FacetKey.key,則預設只會在搜尋結果中傳回「Red」文件,並只傳回「Red」這個顏色 Facet,計數為 100。雖然也有藍色文件,但「藍色」不會顯示為可用的 Facet 值。

如果「color」列在「excludedFilterKeys」中,查詢會傳回 Facet 值「Red」(計數為 100) 和「Blue」(計數為 200),因為「color」鍵現在已從篩選器中排除。由於這個欄位不會影響搜尋結果,搜尋結果仍會正確篩選,只傳回「Red」文件。

最多可輸入 100 個值,否則系統會傳回 INVALID_ARGUMENT 錯誤。

enableDynamicPosition

boolean

啟用這個 facet 的動態位置。如設為 true,系統會自動決定這個側面的位置,以及回應中的所有側面。如果啟用動態 facet,系統會一併排序。如果設為 false,回應中這個 facet 的位置會與要求中的位置相同,且會排在啟用動態位置的 facet 和所有動態 facet 之前。

舉例來說,您可能希望一律在回應中傳回評分層面,但不一定總是將評分層面顯示在頂端。在這種情況下,您可以將 enableDynamicPosition 設為 true,讓系統自動決定回應中評分層面的位置。

再舉一例,假設要求中包含下列側欄:

  • "rating", enableDynamicPosition = true

  • 「price」,enableDynamicPosition = false

  • 「brands」,enableDynamicPosition = false

此外,您也啟用了動態層面,這會產生層面 gender。然後,回應中層面的最終順序可能是 ("price"、"brands"、"rating"、"gender") 或 ("price"、"brands"、"gender"、"rating"),取決於 API 如何排序「gender」和「rating」層面。不過請注意,「price」和「brands」一律會排在第一和第二位,因為它們的 enableDynamicPosition 為 false。

FacetKey

指定如何計算側邊欄。

JSON 表示法
{
  "key": string,
  "intervals": [
    {
      object (Interval)
    }
  ],
  "restrictedValues": [
    string
  ],
  "prefixes": [
    string
  ],
  "contains": [
    string
  ],
  "caseInsensitive": boolean,
  "orderBy": string
}
欄位
key

string

這是必要旗標,Document 物件中支援的文字和數值層面鍵,系統會根據這些鍵計算層面值。分頁鍵須區分大小寫。

intervals[]

object (Interval)

只有在值應分組為間隔時才設定。必須為具有數值的 facet 設定。不得為具有文字值的 facet 設定。間隔數量上限為 30。

restrictedValues[]

string

只取得指定受限值的層面。僅支援文字欄位。舉例來說,假設「類別」有三個值:「動作 > 2022」、「動作 > 2021」和「科幻 > 2022」。如果將「restrictedValues」設為「Action > 2022」,則「category」層面只會包含「Action > 2022」。僅支援文字欄位。最多 10 個。

prefixes[]

string

只取得以指定字串前置字元開頭的側邊值。舉例來說,假設「類別」有三個值:「動作 > 2022」、「動作 > 2021」和「科幻 > 2022」。如果將「前置字元」設為「動作」,「類別」層面只會包含「動作 > 2022」和「動作 > 2021」。僅支援文字欄位。最多 10 個。

contains[]

string

只取得包含指定字串的側滑選單值。舉例來說,假設「類別」有三個值:「動作 > 2022」、「動作 > 2021」和「科幻 > 2022」。如果將「包含」設為「2022」,「類別」層面就只會包含「動作 > 2022」和「科幻 > 2022」。僅支援文字欄位。最多 10 個。

caseInsensitive

boolean

如果使用前置字元或包含取得分面值時,分面鍵不區分大小寫,則為 True;否則為 False。

orderBy

string

傳回文件的順序。

允許的值包括:

如未設定,文字值會以自然順序排序;數值間隔則會以 FacetSpec.FacetKey.intervals 指定的順序排序。