提升搜尋品質

「搜尋品質」是指使用者查詢後,在排名和喚回度方面的搜尋結果品質。

「排序」是指項目的順序,「喚回度」則是指擷取的相關項目數量。「項目」 (也稱為文件) 是 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 屬性決定。較舊的項目會在搜尋結果中的排名降低。

您可以調整結構定義中 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
    }
  },
  ...
}

根據這個結構定義,當使用者搜尋「問題」這個搜尋字詞時,結構定義 (品質 1) 中的問題 3 排名會高於第 2 期 (品質為 .5) 和問題 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」這個查詢字詞,進而收到「您是不是要位員工?」的建議。

Cloud Search 也會使用拼寫校正做為同義詞,協助擷取可能因為拼字錯誤而缺漏的文件。

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

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

  • 評分設定
  • 來源設定

以下兩個章節將說明這些設定如何有助於影響排名。

調整評分設定

您可以為每個搜尋應用程式指定 ScoringConfig,以控制在排名期間部分信號的應用。目前您可以停用更新個人化功能。

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

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

調整來源設定

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

  • 來源重要性
  • 聚集

設定來源重要性

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

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

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

設定擁擠程度

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

這項設定有助於確保搜尋結果的多樣性,並防止單一資料來源脫穎而出。

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

透過個人化功能影響排名

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

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

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

依據商品擁有權決定排名

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

根據商品互動提升排名

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

系統會自動為 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"
        ],
      }
    ],
  },
  ...
}

當使用者在搜尋介面中輸入「befits」的搜尋查詢時,您可以在搜尋要求中加入使用者的位置資訊及部門。例如,以下搜尋要求包含芝加哥工程師的地點和部門資訊:

{
  ...
  "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 結構定義,請參閱定義同義詞