検索品質とは、検索クエリを作成するユーザーによって認識されるランキングと再現率から見た、検索結果の品質のことです。
ランキングとはアイテムの順序付けであり、再現率とは取得された適合アイテムの数です。アイテム(ドキュメントとも呼ばれます)は、Google Cloud Search がインデックスに登録できるデジタル コンテンツです。アイテムの種類には、Microsoft Office ドキュメント、PDF ファイル、データベース内の行、URL などがあります。アイテムは以下のものから構成されます。
- 構造化メタデータ
- インデックス登録可能なコンテンツ
- 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
}
},
...
}
このスキーマの場合、ユーザーが検索語句「issue」で検索すると、スキーマ内の Issue 3(品質は 1)は、Issue 2(品質は 0.5)や Issue 1(指定がなければデフォルトの品質は 0 です)よりも高くランク付けされます。
項目の型によって影響を与える
Cloud Search では、整数型または列挙型プロパティの値に基づいてランキングに影響を与えることができます。整数プロパティまたは列挙型プロパティごとに OrderedRanking
を指定できます。以下の値が設定可能です。
NO_ORDER
(デフォルト): このプロパティはランキングに影響しません。ASCENDING
: 整数型または列挙型プロパティの値が高いアイテムは、値が低いアイテムよりもランキングが上がります。DESCENDING
: 整数型または列挙型プロパティの値が低いアイテムは、値が高いアイテムよりもランキングが上がります。
たとえば、バグ トラッキング システムの各バグに、バグの優先度を HIGH
(1)、MEDIUM
(2)、LOW
(3)のいずれかとして格納する列挙型プロパティがあるとします。このシナリオで OrderedRanking
を DESCENDING
に設定すると、優先度が HIGH
のバグは優先度が LOW
のバグよりもランキングが上がります。バグ トラッキング システムの問題に対する 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 の概要で説明されているように、検索アプリケーションは、検索インターフェースに関連付けられている場合に検索に関するコンテキスト情報を提供する一連の設定です。次の構成により、検索アプリケーションを通してランキングに影響を与えることができます。
- スコアリング構成
- ソース構成
次の 2 つのセクションでは、これらの構成がランキングに影響を与えるうえでどのように役立つかを説明します。
スコアリング構成を調整する
検索アプリケーションごとに、ScoringConfig を指定して、ランク付けの際に一部のシグナルの適用を制御できます。現時点では、鮮度とパーソナライズを無効にできます。
鮮度を無効にすると、データソースのスキーマで指定された鮮度のオプションにかかわらず、検索アプリケーションにリストされているすべてのデータソースについて鮮度が無効になります。同様に、パーソナライズが無効になっている場合、オーナー ブーストとインタラクション ブーストはランキングに影響しません。
この設定を構成する詳細な手順については、Cloud Search の検索エクスペリエンスをカスタマイズするをご覧ください。
ソース構成を調整する
ソース構成によって、検索アプリケーションのデータソース レベルの設定を行えます。次の設定がサポートされています。
- ソースの重要度
- クラウディング
ソースの重要度を設定する
ソースの重要度とは、検索アプリケーション内のデータソースの相対的な重要度のことです。この設定は、SourceScoringConfig
の SourceImportance
フィールドで指定できます。ソースの重要度が HIGH
のデータソースのアイテムは、ソースの重要度が DEFAULT
または LOW
のデータソースのアイテムよりもランキングが上がります。ユーザーが特定のデータソースからの結果を好むと思われる場合は、この設定を使用してランキングに影響を与えます。
たとえば、外部および内部のトラブルシューティング データを含むプロダクト サポート ポータルがあるとします。この場合、内部データソースからの結果を優先するように検索アプリケーションを構成できます。
この設定を構成する詳細な手順については、Cloud Search の検索エクスペリエンスをカスタマイズするをご覧ください。
クラウディングを設定する
クラウディングとは、検索アプリケーションのデータソースから返される可能性がある結果の最大数のことです。この値は、SourceCrowdingConfig
の numResults
フィールドを使用して制御できます。この値はデフォルトは 3 です。つまり、あるデータソースから 3 つの結果が表示されていれば、Cloud Search は他のデータソースからの結果の表示を開始します。すべてのデータソースがそれぞれのクラウディングの上限に達した場合や、他のデータソースから得られる結果がなくなった場合にのみ、最初のデータソースのアイテムが再度使用されます。
この設定は、検索結果の多様性を確保し、検索結果ページが 1 つのデータソースで占められるのを防ぐのに役立ちます。
この設定を構成する詳細な手順については、Cloud Search の検索エクスペリエンスをカスタマイズするをご覧ください。
パーソナライズによってランキングに影響を与える
パーソナライズとは、結果にアクセスする個々のユーザーに基づいてパーソナライズされた検索結果を表示することです。次の基準に基づいてアイテムに優先順位を付けることで、ランキングに影響を与えることができます。
- アイテムのオーナー
- アイテムのインタラクション
- ユーザーがクリック
- アイテムの言語
次の 3 つのセクションでは、これらの基準に基づいて検索品質に影響を与える方法を説明します。
アイテムのオーナーに基づいてランキングを上げる
「アイテムのオーナーに基づいてランキングを上げる」とは、検索クエリを実行するユーザーがオーナーであるアイテムのランキングを上げることです。各項目には、owners
フィールドを持つ ItemAcl
があります。クエリを実行するユーザーがアイテムのオーナーである場合、デフォルトで、そのアイテムのランキングが上がります。このパーソナライズは検索アプリケーションでオフにできます。
アイテムのインタラクションに基づいてランキングを上げる
「アイテムのインタラクションに基づいてランキングを上げる」とは、検索クエリを実行するユーザーがインタラクション(閲覧、コメント、編集など)を行ったアイテムのランキングを上げることです。
アイテムの操作のシグナルは、ドライブや Gmail などの Google Workspace プロダクトで自動的に取得されます。他のプロダクトでは、インタラクションの種類(閲覧や編集)、インタラクションのタイムスタンプ、プリンシパル(アイテムに対してインタラクションを行ったユーザー)など、アイテムレベルのインタラクション データを利用できます。インタラクションを行ってから経過した時間が短いアイテムは、ランキングが高くなります。
ユーザーのクリック数に基づいてランキングを上げる
Cloud Search は、現在の検索結果のクリック数を収集し、同じユーザーが以前にクリックしたアイテムを増やすことで、今後の検索でのランキングを向上させます。
クエリ解釈によってランキングに影響を与える
Cloud Search のクエリ解釈機能は、ユーザーのクエリ内の演算子とフィルタを自動的に解釈し、それらの要素を構造化された演算子ベースのクエリに変換します。クエリ解釈では、インデックス付きドキュメントとともに、スキーマで定義された演算子を使用して、ユーザのクエリの意味を推測します。この機能により、ユーザーは最小限のキーワードで検索できるとともに、正確な結果が得られます。詳細については、最適なクエリ解釈のためのスキーマを構造化するをご覧ください。
アイテムの言語に基づいてランキングを上げる
「アイテムの言語に基づいてランキングを上げる」とは、クエリの言語と一致しない言語のアイテムのランキングを下げることです。言語に基づくアイテムのランキングには、次の要因が影響します。
クエリ言語。検索クエリの自動検出された言語、または
RequestOptions
で指定されたlanguageCode
。カスタム検索インターフェースを作成する場合は、
languageCode
をユーザーのインターフェース言語または言語設定(ウェブブラウザや検索インターフェース ページの言語など)に設定する必要があります。自動検出されたクエリ言語はlanguageCode
よりも優先されるため、ユーザーがインターフェースとは異なる言語でクエリを入力しても、検索品質が損なわれることはありません。アイテムの言語。インデックス時に
ItemMetadata
に設定されたcontentLanguage
、または Cloud Search によって自動的に検出されたコンテンツの言語。インデックス時にドキュメントの
contentLanguage
が空のままで、ItemContent
に値が入力されている場合、Cloud Search はItemContent
で使用されている言語の検出を試み、それを内部に保存します。自動検出された言語はcontentLanguage
フィールドに追加されません。
クエリとアイテムの言語が一致する場合、言語によりランキングが下げられることはありません。これらの設定が一致しない場合、アイテムは降格されます。contentLanguage
が空で、Cloud Search が言語を自動的に検出できなかったドキュメントには、言語の降格は適用されません。そのため、Cloud Search がドキュメントの言語を検出できなくても、ドキュメントのランキングに影響はありません。
アイテムのコンテキストに基づいてランキングを上げる
検索クエリのコンテキストとの関連性が高いアイテムのランキングを上げることができます。コンテキスト(contextAttributes
)は名前付き属性のセットです。インデックス登録時と検索リクエストで指定することで、特定の検索クエリのコンテキストを提供します。
たとえば、従業員福利厚生文書のようなアイテムが、都市(San Francisco
)、州(California
)、国(USA
)、Department
(Engineering
)など、Location
と Department
のコンテキストで関連性が高いとします。この場合、次の名前付き属性を使用してアイテムをインデックスに登録できます。
{
...
"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」の属性が含まれているため、インデックス登録されたアイテム(従業員福利厚生ドキュメント)が検索結果の上位に表示されます。
ここで、別のユーザーであるインドのエンジニアが検索インターフェースに「benefits」という検索クエリを入力したとします。次に、位置情報と部門の情報を含む検索リクエストを示します。
{
...
"contextAttributes": [
{
name: "Location"
values: [
"Bengaluru",
"Karnataka",
"India"
],
},
{
name: "Department"
values: [
"Engineering"
],
}
],
...
}
インデックス付きアイテムと検索リクエストの両方に「Department=Engineering」という属性のみが含まれているため、インデックス付きアイテムは、米国イリノイ州シカゴ在住のエンジニアが入力した「benefits」の最初の検索クエリと比べると、検索結果のわずかに上位に表示されます。
ランキングを上げるために使用できるコンテキストの例を以下に示します。
- 場所: 建物、都市、国、地域など、特定の場所にいるユーザーに関連性の高いアイテムを表示できます。
- 職種: テクニカル ライターやエンジニアなど、特定の職種のユーザーとの関連性が高いアイテムを選ぶことができます。
- 部門: 営業やマーケティングなど、特定の部門に関連する項目です。
- 職務レベル: ディレクターや CEO など、特定の職務レベルに適した項目です。
- 従業員タイプ: パートタイムやフルタイムの従業員など、特定のタイプの従業員との関連性が高いアイテムになります。
- 在職期間: 新入社員など、従業員の在職期間との関連性がより高い項目を設定できます。
アイテムの人気度でランキングに影響を与える
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
スキーマを使用するには、類義語を定義するをご覧ください。