検索品質の向上

検索品質とは、検索クエリを作成するユーザーによって認識されるランキングと再現率から見た、検索結果の品質のことです。

ランキングとはアイテムの順序付けであり、再現率とは取得された適合アイテムの数です。アイテム(ドキュメントとも呼ばれます)とは、 Google Cloud Search がインデックスに登録できるデジタル コンテンツです。アイテムの種類には、Microsoft Office ドキュメント、PDF ファイル、データベース内の行、URL などがあります。アイテムは以下のものから構成されます。

  • 構造化メタデータ
  • インデックス登録可能なコンテンツ
  • ACL

Cloud Search では、さまざまなシグナルを使用して、検索クエリの結果(つまり、検索クエリによって得られるアイテム)を取得してランク付けします。スキーマ、アイテムのコンテンツとメタデータ(インデックス登録時)、検索アプリケーションの設定によって、Cloud Search のシグナルに影響を与えることができます。このドキュメントの目的は、検索品質を向上させるために、シグナルに影響を与える設定をどのように調整すればよいかを学ぶことです。

推奨される設定とオプションの設定の概要については、検索品質の推奨される設定とオプションの設定の概要をご覧ください。

トピカリティ スコアに影響を与える

トピカリティとは、検索結果と元のクエリ語句との関連度を指します。アイテムのトピカリティは、次の基準に基づいて計算されます。

  • 各クエリ語句の重要度。
  • ヒット数(アイテムのコンテンツやメタデータにクエリ語句が出現する回数)。
  • Cloud Search でインデックス登録されたアイテムと一致するクエリ語句とそのバリエーションのタイプ。

テキスト プロパティのトピカリティ スコアに影響を与えるには、 RetrievalImportance を定義します。 値を指定する必要があります。最高レベルの宿泊施設との一致 RetrievalImportance は、 RetrievalImportance が低いホテルです。

たとえば、次のような特徴を持つデータソースがあるとします。

  • データソースはソフトウェア バグの履歴を保存するために使用される。
  • 各バグには名前、説明、優先度がある。

ほとんどのユーザーはバグ名を使用してこのデータソースをクエリするため、 スキーマで名前の RetrievalImportanceHIGHEST に設定します。

逆に、ほとんどのユーザーは 説明の RetrievalImportanceDEFAULT に設定します。 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 TEXTItemContent 取得重要度は DEFAULT で、HTML の場合は取得重要度 HTML プロパティに基づいて決定されます。

鮮度に影響を与える

鮮度: アイテムがどれだけ最近変更され、特定されたかを測定します プロパティの createTimeupdateTime のプロパティによって ItemMetadata。 古いアイテムは検索結果での順位が下がります。

更新頻度を調整することで、オブジェクトの鮮度の計算方法に影響を与えることができます。 freshnessPropertyfreshnessDuration 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
        }
      },
    }
  ]
}

品質に影響を与える

品質とは、アイテムの正確さと有用性を表すものです。データソースには、意味の類似したドキュメントが複数含まれていることがありますが、各ドキュメントの品質はさまざまです。0 ~ 1(SearchQualityMetadata を使用)。 値が大きいアイテムは、値が低いアイテムよりもランキングが上がります。 使用できます。この設定は、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)のいずれかとして格納する列挙型プロパティがあるとします。このシナリオでは、OrderedRankingDESCENDING に設定すると、次のようになります。 優先度が 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」という間違ったスペルでクエリを実行すると、「もしかして: employee」のように候補が表示されることがあります。

また、Cloud Search では、スペルの修正を類義語として使用し、スペルミスのせいで見逃される可能性があるドキュメントの取得に役立てています。

検索アプリケーションの設定によってランキングに影響を与える

Google Cloud Search の概要で説明されているように、検索アプリケーションは、検索インターフェースに関連付けられている場合に検索に関するコンテキスト情報を提供する一連の設定です。次の構成により、検索アプリケーションを通してランキングに影響を与えることができます。

  • スコアリング構成
  • ソース構成

次の 2 つのセクションでは、これらの構成がランキングに影響を与えるうえでどのように役立つかを説明します。

スコアリング構成を調整する

検索アプリケーションごとに、ScoringConfig を指定して、ランク付けの際に一部のシグナルの適用を制御できます。現在、 鮮度パーソナライズを無効にできます。

鮮度を無効にすると、データソースのスキーマで指定された鮮度のオプションにかかわらず、検索アプリケーションにリストされているすべてのデータソースについて鮮度が無効になります。同様に、パーソナライズが無効になっている場合は、オーナー ブーストとインタラクション ブーストはランキングに影響しません。

この設定の詳しい手順については、 Cloud Search の検索エクスペリエンスをカスタマイズする

ソース構成を調整する

ソース構成によって、検索アプリケーションのデータソース レベルの設定を行えます。次の設定がサポートされています。

  • ソースの重要度
  • クラウディング

ソースの重要度を設定する

ソースの重要度とは、検索アプリケーション内のデータソースの相対的な重要度のことです。この設定は SourceImportance フィールドで指定できます 内側 SourceScoringConfig。 ソースの重要度が HIGH のデータソースのアイテムは、ランキングが上がります ソースが DEFAULT または LOW のデータソースのアイテムとの比較 重要ですユーザーが特定のデータソースからの結果を好むと思われる場合は、この設定を使用してランキングに影響を与えます。

たとえば、外部および内部のトラブルシューティング データを含むプロダクト サポート ポータルがあるとします。この場合、内部データソースからの結果を優先するように検索アプリケーションを構成できます。

この設定の詳しい手順については、 Cloud Search の検索エクスペリエンスをカスタマイズする

クラウディングを設定する

クラウディングとは、検索アプリケーションのデータソースから返される可能性がある結果の最大数のことです。この値 numResults フィールドを使用して制御できます。 SourceCrowdingConfig。 この値はデフォルトは 3 で、あるデータから 3 つの結果が示されている場合です。 ソースの Cloud Search が他のデータソースからの結果の表示を開始します。すべてのデータソースがそれぞれのクラウディングの上限に達した場合や、他のデータソースから得られる結果がなくなった場合にのみ、最初のデータソースのアイテムが再度使用されます。

この設定は、検索結果の多様性を確保し、検索結果ページが 1 つのデータソースで占められるのを防ぐのに役立ちます。

この設定の詳しい手順については、 Cloud Search の検索エクスペリエンスをカスタマイズする

パーソナライズによってランキングに影響を与える

パーソナライズとは、結果にアクセスする個々のユーザーに基づいてパーソナライズされた検索結果を表示することです。次の基準に基づいてアイテムに優先順位を付けることで、ランキングに影響を与えることができます。

  • アイテムのオーナー
  • アイテムのインタラクション
  • ユーザーがクリック
  • アイテムの言語

次の 3 つのセクションでは、これらの基準に基づいて検索品質に影響を与える方法を説明します。

アイテムのオーナーに基づいてランキングを上げる

「アイテムのオーナーに基づいてランキングを上げる」とは、検索クエリを実行するユーザーがオーナーであるアイテムのランキングを上げることです。各アイテムには ItemAcl owners フィールドに置き換えます。クエリを実行するユーザーがアイテムのオーナーである場合、デフォルトで、そのアイテムのランキングが上がります。このパーソナライズは検索アプリケーションでオフにできます。

アイテムのインタラクションに基づいてランキングを上げる

「アイテムのインタラクションに基づいてランキングを上げる」とは、検索クエリを実行するユーザーがインタラクション(閲覧、コメント、編集など)を行ったアイテムのランキングを上げることです。

Google Workspace でアイテムのインタラクション シグナルが自動的に取得される 次のようなプロダクトです。他のプロダクトでは、インタラクションの種類(閲覧や編集)、インタラクションのタイムスタンプ、プリンシパル(アイテムに対してインタラクションを行ったユーザー)など、アイテムレベルのインタラクション データを利用できます。インタラクションを行ってから経過した時間が短いアイテムは、ランキングが高くなります。

ユーザーのクリック数に基づいてランキングを上げる

Cloud Search は現在の検索結果のクリックを収集し、それを使用して ユーザーによる検索結果のランキングを上げるために、 できます。

クエリ解釈によってランキングに影響を与える

Cloud Search のクエリ解釈機能は、ユーザーのクエリ内の演算子とフィルタを自動的に解釈し、それらの要素を構造化された演算子ベースのクエリに変換します。クエリ解釈では、インデックス付きドキュメントとともに、スキーマで定義された演算子を使用して、ユーザのクエリの意味を推測します。この機能により、ユーザーは最小限のキーワードで検索できるとともに、正確な結果が得られます。詳しくは 最適なクエリ解釈のためのスキーマを構造化する

アイテムの言語に基づいてランキングを上げる

「アイテムの言語に基づいてランキングを上げる」とは、クエリの言語と一致しない言語のアイテムのランキングを下げることです。次の要因が検索結果のランキングに影響します 言語によって異なります。

  • クエリ言語。検索クエリの自動検出された言語 Pod 内に指定された languageCode RequestOptions

    カスタム検索インターフェースを作成する場合は、languageCode を ユーザーのインターフェース言語や言語設定( 。自動検出されたクエリ 言語が languageCode より優先されるため、検索品質は ユーザーが使用している言語とは異なる言語でクエリを入力すると、 行うことができます。

  • アイテムの言語。インデックス時に ItemMetadata に設定された contentLanguage Cloud Search で自動的に検出されたコンテンツの言語です。

    インデックス時にドキュメントの contentLanguage が空のままで、かつ ItemContent を入力すると、Cloud Search は言語の検出を試みます。 ItemContent で使用され、内部に保存されます。自動検出された contentLanguage フィールドには追加されません。

クエリとアイテムの言語が一致する場合、言語によりランキングが下げられることはありません。条件 これらの設定が一致しない場合、そのアイテムは降格されます。言語の降格は contentLanguage が空で、Cloud Search が行えなかったドキュメントに適用されました 言語が自動的に検出されます。そのため、ドキュメントのランキングは Cloud Search が言語を検出できない場合に影響が生じます。

アイテムのコンテキストに基づいてランキングを上げる

コンテキストとの関連性が高いアイテムのランキングを上げることができます 表示されます。背景 (contextAttributes) インデックス登録時と 特定の検索クエリのコンテキストを提供します。

たとえば、従業員福利厚生の書類のような商品が Location および Department のコンテキスト(都市など)で関連性が高い (San Francisco)、州(California)、国(USA)、DepartmentEngineering)。この場合、次のようにアイテムをインデックスに登録できます。 名前付き属性:

{
  ...
  "metadata": {
    "contextAttributes": [
      {
        name: "Location"
        values: [
          "San Francisco",
          "California",
          "USA"
        ],
      },
      {
        name: "Department"
        values: [
          "Engineering"
        ],
      }
    ],
  },
  ...
}

ユーザーが「特典」という検索語句を入力したときクリックすると ユーザーの所在地や部署が検索に含めることができます リクエストできます。たとえば、場所と部門を含む検索リクエストがあるとします。 シカゴにいるエンジニアのための情報です

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Chicago",
        "Illinois",
        "USA"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

インデックス登録されたアイテムと検索リクエストの両方に、 「部門=エンジニアリング」「Location=USA」をインデックス付けされたアイテム(従業員 福利厚生書類など)が検索結果の上位に表示されます。

ここで、別のユーザーがインド在住のエンジニアが「 「メリット」追加できます次の検索リクエストがあります: 場所と部門の情報:

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Bengaluru",
        "Karnataka",
        "India"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

インデックス登録されたアイテムと検索リクエストの両方に "Department=Engineering" 属性をインデックス登録されたアイテムが、 (最初の検索クエリとの比較) 「メリット」米国イリノイ州シカゴ在住のエンジニアが入力)。

ランキングを上げるために使用できるコンテキストの例を以下に示します。

  • 場所: 建物、都市、国、地域など、特定の場所にいるユーザーに関連性の高いアイテムを表示できます。
  • 職種: テクニカル ライターやエンジニアなど、特定の職種のユーザーとの関連性が高いアイテムを選ぶことができます。
  • 部門: 営業やマーケティングなど、特定の部門に関連する項目です。
  • 職務レベル: ディレクターや CEO など、特定の職務レベルに適した項目です。
  • 従業員タイプ: パートタイムやフルタイムの従業員など、特定のタイプの従業員との関連性が高いアイテムになります。
  • 在職期間: 新入社員など、従業員の在職期間との関連性がより高い項目を設定できます。

アイテムの人気度でランキングに影響を与える

人気アイテムのランキングを上げる 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 詳しくは、このモジュールの 類義語を定義する