提升搜尋品質

搜尋品質是指在排名和喚回度方面,使用者執行搜尋查詢後,系統判定的搜尋結果品質。

「排名」是指項目順序,「喚回度」是指擷取的相關項目數量。項目 (也稱為文件) 是指 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> 等標記,以及字型大小和粗體等格式設定設定,以判斷各種字詞的重要性。如果 ContentFormatTEXTItemContentDEFAULT 擷取重要性,如果是 HTML,則擷取重要性取決於 HTML 屬性。

影響新鮮度

「更新間隔」可測量項目最近的修改時間,由 ItemMetadata 中的 createTimeupdateTime 屬性決定。 較舊的項目在搜尋結果中的排名會降低。

您可以藉由調整結構定義中的 FreshnessOptionsfreshnessPropertyfreshnessDuration,影響物件的計算間隔時間。

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
    }
  },
  ...
}

根據這個結構定義,當使用者使用搜尋字詞「問題」進行搜尋時,結構定義中第 3 期 (品質 1) 的排名會高於問題 2 (0.5 的品質) 和問題 1 (如果沒有指定,預設品質為 0)。

使用欄位類型的影響

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

  • NO_ORDER (預設):這個屬性不會影響排名。
  • ASCENDING:與這個值較低的項目相比,這個值越高的整數或列舉屬性的值越高,排名就越重要。
  • DESCENDING:相較於含有較高值的項目,整數或列舉屬性的值較低的項目,可獲得排名提升。

舉例來說,假設錯誤追蹤系統中的每個錯誤都有列舉屬性,用來將錯誤的優先順序儲存為 HIGH (1)、MEDIUM (2) 或 LOW (3)。在這種情況下,將 OrderedRanking 設為 DESCENDING,相較於 LOW 的優先順序錯誤,將可提升至 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 屬性,針對投票數最多的錯誤提供較高的重要性,藉此影響排名。在這種情況下,您可以將 OrderedRanking 指定為 votes 屬性的 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」這個查詢字詞,因此收到「您是不是要查員工?」這個建議

此外,Cloud Search 也會將拼字檢查視為同義詞,協助擷取其他可能因拼字錯誤而遺漏的文件。

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

Google Cloud Search 簡介所述,搜尋應用程式是一組設定,會在與搜尋介面建立關聯時,提供搜尋的相關資訊。下列設定可讓您透過搜尋應用程式影響排名:

  • 計分設定
  • 來源設定

以下兩個章節將說明這些設定在影響排名時的用途。

調整評分設定

針對每個搜尋應用程式,您可以指定 ScoringConfig 以控制排名時部分信號的應用。目前您可以停用頻率個人化功能。

如果停用更新間隔,則搜尋應用程式中列出的所有資料來源都會停用這項功能,無論資料來源的結構定義中指定的更新間隔選項為何。同樣地,如果停用個人化功能,owner 增加和互動提升也不會影響排名。

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

調整來源設定

來源設定可讓您在搜尋應用程式中指定資料來源層級設定。以下是支援的設定:

  • 來源重要性
  • 聚集

設定來源重要性

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

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

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

設定聚集

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

這項設定有助於確保搜尋結果的多樣性,避免某個資料來源佔據搜尋結果網頁的版面。

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

透過個人化功能影響排名

「個人化」是指根據存取結果的個別使用者,呈現個人化的搜尋結果。您可以依據下列條件將項目排序,藉此影響排名:

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

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

依項目擁有權影響排名

「項目擁有權」是指針對執行搜尋查詢的使用者擁有的項目提升排名。每個項目都有一個包含 owners 欄位的 ItemAcl。根據預設,如果執行查詢的使用者是項目的擁有者,則根據預設,系統會提升該項目的排名。您可以在搜尋應用程式中關閉個人化功能。

根據商品互動方式提升排名

「項目互動」是指針對使用者互動的搜尋查詢項目 (已檢視、加註、編輯等) 提升排名。

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

根據使用者點擊提升排名

Cloud Search 會收集目前搜尋結果的點擊資料,並用於提升使用者先前點選的項目,藉此改善日後的搜尋排名。

透過查詢解釋影響排名

Cloud Search 的「查詢解釋」功能會自動解讀使用者查詢中的運算子和篩選器,並將這些元素轉換成以運算子為基礎的結構化查詢。查詢解釋會使用結構定義中定義的運算子和建立索引的文件,推斷使用者查詢的意義。透過這項功能,使用者只需使用最少的關鍵字進行搜尋,但仍能取得精確的結果。詳情請參閱「建立結構定義以達到最佳查詢解讀效果」一文。

根據商品語言提升排名

「語言」是指在語言與查詢語言不符的項目排名降低排名時。下列因素會根據語言影響項目排名:

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

    如要建立自訂搜尋介面,請將 languageCode 設為使用者的介面語言或語言偏好設定 (例如:網路瀏覽器或搜尋介面頁面的語言)。自動偵測查詢語言的優先順序高於 languageCode,因此當使用者輸入的查詢所使用的語言與介面不同時,搜尋品質就不會受到影響。

  • 項目語言。在索引時間的 ItemMetadata 中設定的 contentLanguage,或 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 可提高熱門項目的排名,也就是提升最近搜尋查詢中獲得點擊的項目。

透過 Clickboost 影響排名

Cloud Search 會收集目前搜尋結果的點擊情況,並利用特定搜尋查詢中的熱門項目,提升日後的搜尋排名。

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

下表列出所有建議和選用的搜尋品質設定。這些建議可協助您從 Cloud Search 的排名模型獲得最大利益。

設定位置建議/選用詳細說明
結構定義設定
ItemContent 欄位ItemContentRecommended建立或更新結構定義時,填入項目的非結構化內容。這個欄位的用途是產生程式碼片段。
RetrievalImportance 欄位RetrievalImportanceRecommended建立或更新結構定義時,請針對明顯重要或主題的文字屬性設定。
FreshnessOptionsFreshnessOptions選用建立或更新結構定義時,請設定確保項目不會因資料不正確或缺少資料而降低排名。
索引設定
createTime/updateTimeItemMetadataRecommended在項目索引建立期間填入資料。
contentLanguageItemMetadataRecommended在項目索引建立期間填入資料。如未顯示,Cloud Search 會嘗試偵測 ItemContent
owners 欄位ItemAcl()Recommended在項目索引建立期間填入資料。
自訂同義詞_dictionaryEntry 結構定義Recommended您可以在資料來源層級定義事件,或是在建立索引時列為獨立的資料來源。
quality 欄位SearchQualityMetadata選用如要相較於其他語意相似的項目,進行基本品質提升作業,請在建立索引時設定品質。為資料來源中的所有項目設定這個欄位時,其效果會失效。
商品層級互動資料interaction選用如果資料來源記錄並提供使用者互動的存取權,請在建立索引期間為每個項目填入互動。
整數/列舉屬性OrderedRanking選用如果項目順序具有關聯性,請在建立索引時指定整數和列舉屬性的順序排名。
搜尋應用程式設定
Personalization=falseScoringConfig 或使用 Cloud Search 管理員 UIRecommended建立或更新搜尋應用程式時。請務必按照透過個人化功能影響排名的說明,提供正確的擁有者資訊
SourceImportance 欄位SourceCrowdingConfig選用如要調整特定資料來源的結果,請設定這個欄位。
numResults 欄位SourceCrowdingConfig選用如要控管結果的多樣性,請設定這個欄位。

後續步驟

以下是您可能的後續步驟:

  1. 建立結構定義以達到最佳查詢解讀效果

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