搜尋品質是指使用者在搜尋查詢時,對搜尋結果排名和召回率的感受。
排名是指項目的排序方式,召回是指擷取的相關項目數量。「項目」 (也稱為文件) 是指 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>
等標記,以及字型大小和粗體等格式設定,判斷各個字詞的重要性。如果
ContentFormat
為 TEXT
,
ItemContent
具有 DEFAULT
擷取重要性,且為 HTML,則其擷取重要性會根據 HTML 屬性判斷。
影響程度更新間隔
即時性會評估項目最近的修改時間,並由 ItemMetadata
中的 createTime
和 updateTime
屬性決定。較舊的項目在搜尋結果中會遭到降級。
您可以調整結構定義中的 freshnessProperty
和 freshnessDuration
,FreshnessOptions
影響物件的新鮮度計算方式。
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
優先順序的錯誤相比,設定 OrderedRanking
為 DESCENDING
可提升 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
欄位中指定。與來源重要性為 DEFAULT
或 LOW
的資料來源項目相比,來源重要性為 HIGH
的資料來源項目排名會提升。如果您認為使用者偏好特定資料來源的結果,不妨使用這項設定來影響排名。
舉例來說,假設您有一個產品支援入口網站,其中包含外部和內部疑難排解資料。在這種情況下,您可能需要設定搜尋應用程式,優先顯示內部資料來源的結果。
如需設定這項設定的逐步操作說明,請參閱「自訂 Cloud Search 搜尋體驗」。
設定擁擠度
擁擠是指搜尋應用程式中,可從資料來源傳回的結果數量上限。您可以使用 SourceCrowdingConfig
中的 numResults
欄位控制這個值。這個值預設為 3,也就是說,如果我們已顯示來自資料來源的 3 個結果,Cloud Search 就會開始顯示來自其他資料來源的結果。只有在所有資料來源都達到擁擠限制,或沒有其他資料來源的結果時,系統才會重新考慮第一個資料來源的項目。
這項設定有助於確保搜尋結果的多樣性,並避免單一資料來源主導搜尋結果網頁。
如需設定這項設定的逐步操作說明,請參閱「自訂 Cloud Search 搜尋體驗」。
透過個人化設定影響排名
個人化是指根據存取結果的個別使用者,顯示個人化搜尋結果。你可以根據下列條件優先處理項目,進而影響排名:
- 商品擁有權
- 商品互動
- 使用者點擊次數
- 商品語言
以下三節將說明如何根據這些條件提升搜尋品質。
根據商品擁有權影響排名
項目擁有權是指為執行搜尋查詢的使用者擁有的項目提供排名提升。每個項目都有 ItemAcl
,並包含 owners
欄位。如果執行查詢的使用者是項目擁有者,該項目預設會獲得排名提升。你可以在搜尋應用程式中關閉個人化設定。
根據商品互動次數提升排名
項目互動是指為搜尋查詢使用者互動 (查看、留言、編輯等) 的項目提供排名提升。
系統會自動取得 Google 雲端硬碟和 Gmail 等 Google Workspace 產品的項目互動信號。如果是其他產品,您可以提供項目層級的互動資料,包括互動類型 (查看、編輯)、互動時間戳記,以及主體 (與項目互動的使用者)。請注意,最近有互動的項目會獲得較高的排名提升。
根據使用者點擊次數提高排名
Cloud Search 會收集目前搜尋結果的點擊次數,並用於提升日後搜尋的排名,方法是提高同一位使用者先前點選項目的排名。
透過查詢解讀影響排名
Cloud Search 的查詢解讀功能會自動解讀使用者查詢中的運算子和篩選條件,並將這些元素轉換為以運算子為基礎的結構化查詢。查詢解讀功能會使用結構定義中定義的運算子,以及已建立索引的文件,推斷使用者查詢的意義。使用者只要輸入最少的關鍵字,就能獲得精確的搜尋結果。詳情請參閱「建立結構定義,讓查詢解讀結果達到最佳狀態」。
根據商品語言提高排名
語言:如果項目的語言與查詢語言不符,系統會降低該項目的排名。以下因素會影響項目在特定語言中的排名:
查詢語言。搜尋查詢自動偵測到的語言,或
languageCode
RequestOptions
中指定的語言。如果您要建構自訂搜尋介面,請將
languageCode
設為使用者的介面語言或語言偏好設定 (例如網頁瀏覽器或搜尋介面網頁的語言)。系統會優先採用自動偵測到的查詢語言,而非languageCode
,因此使用者以不同於介面的語言輸入查詢時,搜尋品質不會受到影響。商品語言。
contentLanguage
在建立索引時於ItemMetadata
中設定, 或 Cloud Search 自動偵測的內容語言。如果在建立索引時,文件的
contentLanguage
為空白,但ItemContent
已填入值,Cloud Search 會嘗試偵測ItemContent
中使用的語言,並在內部儲存。系統不會將自動偵測到的語言新增至contentLanguage
欄位。
如果查詢和項目的語言相符,系統不會降低語言的優先順序。如果這些設定不相符,商品就會遭到降級。如果文件中的 contentLanguage
為空白,且 Cloud Search 無法自動偵測語言,系統就不會降級。因此,如果 Cloud Search 無法偵測文件的語言,文件的排名就不會受到影響。
根據商品情境提高排名
您可以提高與搜尋查詢內容更相關項目的排名。背景資訊 (contextAttributes
) 是一組具名的屬性,您可以在建立索引和搜尋要求時指定這些屬性,為特定搜尋查詢提供背景資訊。
舉例來說,假設某個項目 (例如員工福利文件) 在 Location
和 Department
的脈絡中更為相關,例如城市 (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 | 建議 | 建立或更新結構定義時,請為明顯重要或與主題相關的文字屬性設定標籤。 |
FreshnessOptions | FreshnessOptions | 選用 | 建立或更新結構定義時,請進行設定,確保商品不會因資料不正確或缺少資料而遭到降級。 |
索引設定 | |||
createTime /updateTime | ItemMetadata | 建議 | 在項目編列索引期間填入。 |
contentLanguage | ItemMetadata | 建議 | 在項目編列索引期間填入。如果沒有,Cloud Search 會嘗試偵測 ItemContent 中使用的語言。 |
owners 欄位 | ItemAcl() | 建議 | 在項目編列索引期間填入。 |
自訂同義詞 | _dictionaryEntry 結構定義 | 建議 | 在建立索引時,於資料來源層級定義,或定義為個別資料來源。 |
quality 欄位 | SearchQualityMetadata | 選用 | 如要與其他語意相似的項目相比,提供基本品質提升,請在建立索引時設定品質。如果為資料來源中的所有項目設定這個欄位,則會使該欄位失效。 |
商品層級互動資料 | interaction | 選用 | 如果資料來源會記錄並提供使用者互動的存取權,請在建立索引時填入每個項目的互動。 |
整數/列舉屬性 | OrderedRanking | 選用 | 如果項目順序很重要,請在建立索引時,為整數和列舉屬性指定排序的排名。 |
搜尋應用程式設定 | |||
Personalization=false | ScoringConfig 或使用 Cloud Search 管理員 UI | 建議 | 建立或更新搜尋應用程式時。請務必提供正確的擁有者資訊,詳情請參閱「透過個人化功能影響排名」一文 |
SourceImportance 欄位 | SourceCrowdingConfig | 選用 | 如要調整特定資料來源的結果,請設定這個欄位。 |
numResults 欄位 | SourceCrowdingConfig | 選用 | 如要控制結果的多樣性,請設定這個欄位。 |
後續步驟
您可以採取下列幾個後續步驟:
瞭解如何運用
_dictionaryEntry
結構定義,為貴公司常用的字詞定義同義詞。如要使用_dictionaryEntry
架構,請參閱定義同義詞。