提升搜尋品質

搜尋品質是指使用者在搜尋查詢時,對搜尋結果排名和召回率的感受。

排名是指項目的排序方式,召回是指擷取的相關項目數量。「項目」 (也稱為文件) 是指 Google Cloud Search 可編入索引的任何數位內容。項目類型包括 Microsoft Office 文件、PDF 檔案、資料庫中的資料列、不重複的網址等。項目包含:

  • 結構化中繼資料
  • 可建立索引的內容
  • 存取控制清單 (ACL)

Cloud Search 會使用各種信號擷取搜尋查詢結果並排序,也就是搜尋查詢產生的項目。您可以透過結構定義、項目內容和中繼資料 (在建立索引期間) 以及搜尋應用程式中的設定,影響 Cloud Search 的信號。這份文件的目標是協助您透過修改這些信號影響因素,提升搜尋品質。

如需建議和選用設定的摘要,請參閱「建議和選用搜尋品質設定摘要」。

影響主題相關度分數

主題性是指搜尋結果與原始查詢字詞的關聯性。系統會根據下列條件計算商品的主題性:

  • 每個查詢字詞的重要性。
  • 命中次數 (查詢字詞出現在商品內容或中繼資料中的次數)。
  • 查詢字詞及其變體與 Cloud Search 中編入索引的項目相符的類型。

如要影響文字屬性的主題性分數,請在結構定義中定義文字屬性的 RetrievalImportance。如果房源的 RetrievalImportance 較高,相符的房源會獲得較高分數;如果房源的 RetrievalImportance 較低,相符的房源會獲得較低分數。

舉例來說,假設您有一個具有下列特性的資料來源:

  • 資料來源用於儲存軟體錯誤的記錄。
  • 每個錯誤都有名稱、說明和優先順序。

大多數使用者會使用錯誤名稱查詢這個資料來源,因此您會在結構定義中將名稱的 RetrievalImportance 設為 HIGHEST

反之,大多數使用者可能不會使用錯誤說明查詢這個資料來源,因此請將說明的 RetrievalImportance 設為 DEFAULT。以下是包含 RetrievalImportance 設定的結構定義範例。

{
  "objectDefinitions": [
    {
      "name": "issues",
      "propertyDefinitions": [
        {
          "name": "summary",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGHEST
              }
            }
          },
        {
          "name": "description",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": DEFAULT
              }
            }
          },
        {
          "name": "label",
            "isRepeatable": true,
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": DEFAULT
              }
            }
          },
        {
          "name": "comments",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": DEFAULT
              }
            }
          },
        {
          "name": "project",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGH
              }
            }
          },
        {
          "name": "duedate",
          "datePropertyOptions": {
          }
        },
        ...
      ]
    }
  ]
}

如果是 HTML 文件,系統會使用 <title><h1> 等標記,以及字型大小和粗體等格式設定,判斷各個字詞的重要性。如果 ContentFormatTEXTItemContent 具有 DEFAULT 擷取重要性,且為 HTML,則其擷取重要性會根據 HTML 屬性判斷。

影響程度更新間隔

即時性會評估項目最近的修改時間,並由 ItemMetadata 中的 createTimeupdateTime 屬性決定。較舊的項目在搜尋結果中會遭到降級。

您可以調整結構定義中的 freshnessPropertyfreshnessDurationFreshnessOptions 影響物件的新鮮度計算方式。

freshnessProperty 可讓您使用日期或時間戳記屬性計算新鮮度,而非預設的 updateTime

在先前的軟體錯誤追蹤系統範例中,到期日可做為 freshnessProperty,到期日最接近目前日期的項目會被視為「較新」,並獲得排名提升。以下是包含 freshnessProperty 設定的範例結構定義:

{
  "objectDefinitions": [
    {
      "name": "issues",
      "options": {
        "freshnessOptions": {
          "freshnessProperty": "duedate"
        }
      },
      "propertyDefinitions": [
        {
          "name": "summary",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGHEST
            }
          }
        },
        {
          "name": "duedate",
          "datePropertyOptions": {
          }
        },
        ...
      ]
    }
  ]
}

使用 freshnessDuration 判斷項目何時過時。舉例來說,您可能擁有未定期建立索引的資料來源,或不希望新近度影響排名。如要達成這個目標,請為 freshnessDuration 指定較高的值。

假設您有一個資料來源,內含員工個人資料資訊。在這種情況下,您可能需要較高的 freshnessDuration,因為員工資訊的變更通常與員工的排名無關。以下是包含 freshnessDuration 設定的結構定義範例:

{
  "objectDefinitions": [
    {
      "name": "people",
      "options": {
        "freshnessOptions": {
          "freshnessDuration": "315360000s", # 100 years
        }
      },
    }
  ]
}

如果資料來源的內容變化快速 (例如包含新聞文章的資料來源),您也可以將 freshnessDuration 設為很小的值。在這種情況下,最近建立或修改的文件最為相關。 以下是範例結構定義,其中包含含有快速變更內容的資料來源的 freshnessDuration 設定:

{
  "objectDefinitions": [
    {
      "name": "news",
      "options": {
        "freshnessOptions": {
          "freshnessDuration": "259200s", # 3 days
        }
      },
    }
  ]
}

影響品質

品質是衡量項目準確度和實用性的指標。資料來源可以包含多個語意相似的文件,但品質各不相同。您可以使用 SearchQualityMetadata 指定介於 0 至 1 之間的品質值。值較高的項目會比值較低的項目獲得排名提升。只有在需要影響或提升 Cloud Search 以外項目資訊的品質時,才使用這項設定。

舉例來說,假設您有一個資料來源,內含員工福利文件。您可以使用 SearchQualityMetadata,提高人力資源員工撰寫的文件排名,讓這類文件優先於其他員工撰寫的文件。

以下是範例結構定義,其中包含錯誤追蹤系統中問題的 SearchQualityMetadata 設定:

{
  "name": "datasources/.../items/issue1",
  "acl": {
    ...
  },
  "metadata": {
    "title": "Issue 1"
    "objectType": "issues"
  },
  ...
}

{
  "name": "datasources/.../items/issue2",
  "acl": {
    ...
  },
  "metadata": {
    "title": "Issue 2"
    "objectType": "issues"
    "searchQualityMetadata": {
      "quality": 0.5
    }
  },
  ...
}

{
  "name": "datasources/.../items/issue3",
  "acl": {
    ...
  },
  "metadata": {
    "title": "Issue 3"
    "objectType": "issues"
    "searchQualityMetadata": {
      "quality": 1
    }
  },
  ...
}

根據這個結構定義,當使用者使用「issue」這個搜尋字詞搜尋時,結構定義中的 Issue 3 (品質為 1) 會比 Issue 2 (品質為 0.5) 和 Issue 1 (如果未指定任何項目,預設品質為 0) 排名更高。

使用欄位類型影響

Cloud Search 可讓您根據列舉或整數屬性的值,影響排名。針對每個整數或列舉屬性,可以指定 OrderedRanking。這項設定的值如下:

  • NO_ORDER (預設):屬性不會影響排名。
  • ASCENDING:如果這個整數或列舉屬性的值較高,項目排名就會比值較低的項目高。
  • DESCENDING:整數或列舉屬性值較低的項目,排名會比值較高的項目提升。

舉例來說,假設錯誤追蹤系統中的每個錯誤都有列舉屬性,可將錯誤的優先順序儲存為 HIGH (1)、MEDIUM (2) 或 LOW (3)。在此情境中,與 LOW 優先順序的錯誤相比,設定 OrderedRankingDESCENDING 可提升 HIGH 優先順序錯誤的排名。以下是包含錯誤追蹤系統中問題 OrderedRanking 設定的結構定義範例:

{
  "objectDefinitions": [
    {
      "name": "issues",
      "options": {
        "freshnessOptions": {
          "freshnessProperty": "duedate",
        }
      },
      "propertyDefinitions": [
        {
          "name": "summary",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGHEST
            }
          }
        },
        {
          "name": "duedate",
          "datePropertyOptions": {
          }
        },
        {
          "name": "priority",
          "enumPropertyOptions": {
            "possibleValues": [
              {
                "stringValue": "HIGH",
                "integerValue": 1
              },
              {
                "stringValue": "MEDIUM",
                "integerValue": 2
              },
              {
                "stringValue": "LOW",
                "integerValue": 3
              }
            ],
            "orderedRanking": DESCENDING,
          }
        },

        ...
      ]
    }
  ]
}

錯誤追蹤系統也可能具有名為 votes 的整數屬性,用於收集使用者對錯誤相對重要性的意見回饋。您可以透過 votes 屬性,將獲得最多票數的錯誤設為較高重要性,藉此影響排名。在這種情況下,您可以為 votes 屬性指定 OrderedRanking,讓獲得最多票數的問題排名提升。ASCENDING以下是包含錯誤追蹤系統中問題的 OrderedRanking 設定範例結構定義:

{
  "objectDefinitions": [
    {
      "name": "issues",
      "propertyDefinitions": [
        {
          "name": "summary",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGHEST
            }
          }
        },
        {
          "name": "description",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": DEFAULT
            }
          }
        },
        {
          "name": "votes",
          "integerPropertyOptions": {
            "orderedRanking": ASCENDING,
            "minimumValue": 0,
            "maximumValue": 1000,
          }
        },

        ...
      ]
    }
  ]
}

透過查詢擴充功能影響排名

查詢擴充是指使用同義詞和拼字擴充查詢中的字詞,以擷取更實用的結果。

使用同義字影響搜尋結果

Cloud Search 會根據公開網頁內容推斷同義字,藉此擴展查詢字詞。您也可以定義自訂同義詞,擷取機構專屬術語,例如機構內常用的縮寫或產業專屬術語。

自訂同義字可定義在資料來源中,或做為個別資料來源。根據預設,同義字會套用至所有搜尋應用程式的所有資料來源。不過,您可以依資料來源和搜尋應用程式將同義字分組。如要瞭解如何定義自訂同義字 (包括依搜尋應用程式分組),請參閱「定義同義字」。

使用拼字影響搜尋結果

Cloud Search 會根據使用公開 Google 搜尋資料建構的模型,提供拼字建議。如果 Cloud Search 在查詢內容中偵測到錯字,系統會在 SpellResult 中傳回建議的查詢。系統會向使用者顯示建議的拼字。舉例來說,使用者可能會將查詢字詞「employe」拼錯,並收到「你是不是要找『employee』?」的建議。

Cloud Search 也會將拼字修正結果視為同義詞,協助擷取因拼字錯誤而可能遺漏的文件。

透過搜尋應用程式設定影響排名

如「Google Cloud Search 簡介」一文所述,搜尋應用程式是一組設定,與搜尋介面建立關聯後,可提供搜尋的脈絡資訊。您可以透過下列設定,在搜尋應用程式中影響排名:

  • 評分設定
  • 來源設定

以下兩節說明這些設定如何影響排名。

調整評分設定

您可以為每個搜尋應用程式指定 ScoringConfig,用於控管排名期間某些信號的應用程式。目前可以停用新穎度個人化

如果停用即時性,搜尋應用程式中列出的所有資料來源都會停用即時性,無論資料來源的結構定義中指定了哪些即時性選項。同樣地,如果停用個人化功能,擁有者提升和互動提升就不會影響排名。

如需設定這項設定的逐步操作說明,請參閱「自訂 Cloud Search 搜尋體驗」。

調整來源設定

您可以在搜尋應用程式中,透過來源設定指定資料來源層級的設定。系統支援下列設定:

  • 來源重要性
  • 聚集

設定來源重要性

來源重要性是指搜尋應用程式中資料來源的相對重要性。這項設定可在 SourceScoringConfig 內的 SourceImportance 欄位中指定。與來源重要性為 DEFAULTLOW 的資料來源項目相比,來源重要性為 HIGH 的資料來源項目排名會提升。如果您認為使用者偏好特定資料來源的結果,不妨使用這項設定來影響排名。

舉例來說,假設您有一個產品支援入口網站,其中包含外部和內部疑難排解資料。在這種情況下,您可能需要設定搜尋應用程式,優先顯示內部資料來源的結果。

如需設定這項設定的逐步操作說明,請參閱「自訂 Cloud Search 搜尋體驗」。

設定擁擠度

擁擠是指搜尋應用程式中,可從資料來源傳回的結果數量上限。您可以使用 SourceCrowdingConfig 中的 numResults 欄位控制這個值。這個值預設為 3,也就是說,如果我們已顯示來自資料來源的 3 個結果,Cloud Search 就會開始顯示來自其他資料來源的結果。只有在所有資料來源都達到擁擠限制,或沒有其他資料來源的結果時,系統才會重新考慮第一個資料來源的項目。

這項設定有助於確保搜尋結果的多樣性,並避免單一資料來源主導搜尋結果網頁。

如需設定這項設定的逐步操作說明,請參閱「自訂 Cloud Search 搜尋體驗」。

透過個人化設定影響排名

個人化是指根據存取結果的個別使用者,顯示個人化搜尋結果。你可以根據下列條件優先處理項目,進而影響排名:

  • 商品擁有權
  • 商品互動
  • 使用者點擊次數
  • 商品語言

以下三節將說明如何根據這些條件提升搜尋品質。

根據商品擁有權影響排名

項目擁有權是指為執行搜尋查詢的使用者擁有的項目提供排名提升。每個項目都有 ItemAcl,並包含 owners 欄位。如果執行查詢的使用者是項目擁有者,該項目預設會獲得排名提升。你可以在搜尋應用程式中關閉個人化設定。

根據商品互動次數提升排名

項目互動是指為搜尋查詢使用者互動 (查看、留言、編輯等) 的項目提供排名提升。

系統會自動取得 Google 雲端硬碟和 Gmail 等 Google Workspace 產品的項目互動信號。如果是其他產品,您可以提供項目層級的互動資料,包括互動類型 (查看、編輯)、互動時間戳記,以及主體 (與項目互動的使用者)。請注意,最近有互動的項目會獲得較高的排名提升。

根據使用者點擊次數提高排名

Cloud Search 會收集目前搜尋結果的點擊次數,並用於提升日後搜尋的排名,方法是提高同一位使用者先前點選項目的排名。

透過查詢解讀影響排名

Cloud Search 的查詢解讀功能會自動解讀使用者查詢中的運算子和篩選條件,並將這些元素轉換為以運算子為基礎的結構化查詢。查詢解讀功能會使用結構定義中定義的運算子,以及已建立索引的文件,推斷使用者查詢的意義。使用者只要輸入最少的關鍵字,就能獲得精確的搜尋結果。詳情請參閱「建立結構定義,讓查詢解讀結果達到最佳狀態」。

根據商品語言提高排名

語言:如果項目的語言與查詢語言不符,系統會降低該項目的排名。以下因素會影響項目在特定語言中的排名:

  • 查詢語言。搜尋查詢自動偵測到的語言,或languageCodeRequestOptions中指定的語言。

    如果您要建構自訂搜尋介面,請將 languageCode 設為使用者的介面語言或語言偏好設定 (例如網頁瀏覽器或搜尋介面網頁的語言)。系統會優先採用自動偵測到的查詢語言,而非 languageCode,因此使用者以不同於介面的語言輸入查詢時,搜尋品質不會受到影響。

  • 商品語言。contentLanguage 在建立索引時於 ItemMetadata 中設定, 或 Cloud Search 自動偵測的內容語言。

    如果在建立索引時,文件的 contentLanguage 為空白,但 ItemContent 已填入值,Cloud Search 會嘗試偵測 ItemContent 中使用的語言,並在內部儲存。系統不會將自動偵測到的語言新增至 contentLanguage 欄位。

如果查詢和項目的語言相符,系統不會降低語言的優先順序。如果這些設定不相符,商品就會遭到降級。如果文件中的 contentLanguage 為空白,且 Cloud Search 無法自動偵測語言,系統就不會降級。因此,如果 Cloud Search 無法偵測文件的語言,文件的排名就不會受到影響。

根據商品情境提高排名

您可以提高與搜尋查詢內容更相關項目的排名。背景資訊 (contextAttributes) 是一組具名的屬性,您可以在建立索引和搜尋要求時指定這些屬性,為特定搜尋查詢提供背景資訊。

舉例來說,假設某個項目 (例如員工福利文件) 在 LocationDepartment 的脈絡中更為相關,例如城市 (San Francisco)、州/省 (California)、國家/地區 (USA) 和 Department (Engineering)。在這種情況下,您可以為項目建立索引,並使用下列具名屬性:

{
  ...
  "metadata": {
    "contextAttributes": [
      {
        name: "Location"
        values: [
          "San Francisco",
          "California",
          "USA"
        ],
      },
      {
        name: "Department"
        values: [
          "Engineering"
        ],
      }
    ],
  },
  ...
}

當使用者在搜尋介面輸入「福利」的搜尋查詢時,您可能會在搜尋要求中加入使用者的位置資訊和部門。舉例來說,以下是包含芝加哥工程師位置和部門資訊的搜尋要求:

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Chicago",
        "Illinois",
        "USA"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

由於索引項目和搜尋要求都包含「Department=Engineering」和「Location=USA」的屬性,因此索引項目 (員工福利文件) 會在搜尋結果中顯示在較高的位置。

現在假設另一位使用者 (印度的工程師) 在搜尋介面中輸入「福利」的搜尋查詢。以下是包含位置和部門資訊的搜尋要求:

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Bengaluru",
        "Karnataka",
        "India"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

由於編入索引的項目和搜尋要求包含「Department=Engineering」屬性,因此編入索引的項目在搜尋結果中只會稍微靠前 (與位於美國伊利諾州芝加哥的工程師輸入「福利」的第一個搜尋查詢相比)。

以下列舉幾個可提高排名的背景資訊範例:

  • 地點:項目可能與特定地點 (例如建築物、城市、國家/地區或區域) 的使用者更相關。
  • 工作角色:項目可能與特定工作角色 (例如技術作家或工程師) 的使用者更相關。
  • 部門:項目可能與特定部門 (例如銷售或行銷) 更相關。
  • 職位層級:項目可能與特定職位層級 (例如總監或執行長) 更相關。
  • 員工類型:項目可能與特定類型的員工 (例如兼職和全職員工) 更相關。
  • 任期:項目可能與員工的任期較相關,例如新進員工。

透過商品熱門程度影響排名

Cloud Search 會提高熱門項目的排名,也就是提高最近搜尋查詢中獲得點擊的項目。

透過點擊次數增幅影響排名

Cloud Search 會收集目前搜尋結果的點擊次數,並根據這些資料,在日後的搜尋中提升特定搜尋查詢的熱門項目排名,進而改善排名。

建議和選用搜尋品質設定摘要

下表列出所有建議和選用的搜尋品質設定。這些建議有助於您充分運用 Cloud Search 排名模型。

設定位置建議/選填詳細資料
架構設定
ItemContent 欄位ItemContent建議建立或更新結構定義時,請填入項目的非結構化內容。這個欄位用於生成摘要。
RetrievalImportance 欄位RetrievalImportance建議建立或更新結構定義時,請為明顯重要或與主題相關的文字屬性設定標籤。
FreshnessOptionsFreshnessOptions選用建立或更新結構定義時,請進行設定,確保商品不會因資料不正確或缺少資料而遭到降級。
索引設定
createTime/updateTimeItemMetadata建議在項目編列索引期間填入。
contentLanguageItemMetadata建議在項目編列索引期間填入。如果沒有,Cloud Search 會嘗試偵測 ItemContent 中使用的語言。
owners 欄位ItemAcl()建議在項目編列索引期間填入。
自訂同義詞_dictionaryEntry 結構定義建議在建立索引時,於資料來源層級定義,或定義為個別資料來源。
quality 欄位SearchQualityMetadata選用如要與其他語意相似的項目相比,提供基本品質提升,請在建立索引時設定品質。如果為資料來源中的所有項目設定這個欄位,則會使該欄位失效。
商品層級互動資料interaction選用如果資料來源會記錄並提供使用者互動的存取權,請在建立索引時填入每個項目的互動。
整數/列舉屬性OrderedRanking選用如果項目順序很重要,請在建立索引時,為整數和列舉屬性指定排序的排名。
搜尋應用程式設定
Personalization=falseScoringConfig 或使用 Cloud Search 管理員 UI建議建立或更新搜尋應用程式時。請務必提供正確的擁有者資訊,詳情請參閱「透過個人化功能影響排名」一文
SourceImportance 欄位SourceCrowdingConfig選用如要調整特定資料來源的結果,請設定這個欄位。
numResults 欄位SourceCrowdingConfig選用如要控制結果的多樣性,請設定這個欄位。

後續步驟

您可以採取下列幾個後續步驟:

  1. 建立結構定義,以便最佳解讀查詢

  2. 瞭解如何運用 _dictionaryEntry 結構定義,為貴公司常用的字詞定義同義詞。如要使用 _dictionaryEntry 架構,請參閱定義同義詞