搜尋品質是指在排名和喚回度方面,使用者執行搜尋查詢後,系統判定的搜尋結果品質。
「排名」是指項目順序,「喚回度」是指擷取的相關項目數量。項目 (也稱為文件) 是指 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
屬性決定。
較舊的項目在搜尋結果中的排名會降低。
您可以藉由調整結構定義中的 FreshnessOptions
的 freshnessProperty
和 freshnessDuration
,影響物件的計算間隔時間。
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
欄位中指定這項設定。相較於來自資料來源為 DEFAULT
或 LOW
的資料來源項目,來源重要性為 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
) 是一組具名屬性,您可以在建立索引期間和搜尋要求中指定,為特定搜尋查詢提供背景資訊。
舉例來說,假設員工福利文件等項目與 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 可提高熱門項目的排名,也就是提升最近搜尋查詢中獲得點擊的項目。
透過 Clickboost 影響排名
Cloud Search 會收集目前搜尋結果的點擊情況,並利用特定搜尋查詢中的熱門項目,提升日後的搜尋排名。
建議和選用的搜尋品質設定摘要
下表列出所有建議和選用的搜尋品質設定。這些建議可協助您從 Cloud Search 的排名模型獲得最大利益。
設定 | 位置 | 建議/選用 | 詳細說明 |
---|---|---|---|
結構定義設定 | |||
ItemContent 欄位 | ItemContent | Recommended | 建立或更新結構定義時,填入項目的非結構化內容。這個欄位的用途是產生程式碼片段。 |
RetrievalImportance 欄位 | RetrievalImportance | Recommended | 建立或更新結構定義時,請針對明顯重要或主題的文字屬性設定。 |
FreshnessOptions | FreshnessOptions | 選用 | 建立或更新結構定義時,請設定確保項目不會因資料不正確或缺少資料而降低排名。 |
索引設定 | |||
createTime /updateTime | ItemMetadata | Recommended | 在項目索引建立期間填入資料。 |
contentLanguage | ItemMetadata | Recommended | 在項目索引建立期間填入資料。如未顯示,Cloud Search 會嘗試偵測 ItemContent |
owners 欄位 | ItemAcl() | Recommended | 在項目索引建立期間填入資料。 |
自訂同義詞 | _dictionaryEntry 結構定義 | Recommended | 您可以在資料來源層級定義事件,或是在建立索引時列為獨立的資料來源。 |
quality 欄位 | SearchQualityMetadata | 選用 | 如要相較於其他語意相似的項目,進行基本品質提升作業,請在建立索引時設定品質。為資料來源中的所有項目設定這個欄位時,其效果會失效。 |
商品層級互動資料 | interaction | 選用 | 如果資料來源記錄並提供使用者互動的存取權,請在建立索引期間為每個項目填入互動。 |
整數/列舉屬性 | OrderedRanking | 選用 | 如果項目順序具有關聯性,請在建立索引時指定整數和列舉屬性的順序排名。 |
搜尋應用程式設定 | |||
Personalization=false | ScoringConfig 或使用 Cloud Search 管理員 UI | Recommended | 建立或更新搜尋應用程式時。請務必按照透過個人化功能影響排名的說明,提供正確的擁有者資訊 |
SourceImportance 欄位 | SourceCrowdingConfig | 選用 | 如要調整特定資料來源的結果,請設定這個欄位。 |
numResults 欄位 | SourceCrowdingConfig | 選用 | 如要控管結果的多樣性,請設定這個欄位。 |
後續步驟
以下是您可能的後續步驟:
瞭解如何使用
_dictionaryEntry
結構定義,定義公司常用字詞的同義詞。如要使用_dictionaryEntry
結構定義,請參閱定義同義詞。