オートコンプリートの実装

Google Cloud Search のオートコンプリートは、ユーザーが検索クエリを入力するときに単語を提案することでユーザーを支援します。たとえば、ドキュメント タイトルからの単語、検索演算子、Google Workspace 組織の名前などが候補として表示されることがあります。

オートコンプリートは、インデックスに登録されたドキュメントのタイトルからフレーズを抽出し、n-gram モデルを使用して、Suggest API で提案を決定します。デフォルトでは、オートコンプリートにはドキュメント タイトルのフレーズが表示されます。テキストと列挙型スキーマ プロパティを is_suggestable としてマークして、プロパティ名と値をオートコンプリートすることもできます。

Suggest API は、検索クエリで英語やスペイン語などの言語ヒントを調べ、結果の優先順位を付けます。リクエストの languageCode フィールドも、言語固有の候補の精度を高めます。

シナリオ例

映画データを含むデータソースを考えてみましょう。

  • データソースには 2 つのドキュメントが含まれています。
  • 各ドキュメントには、タイトル(ItemMetadata.title)と 2 つのプロパティ(genrecharacters)があります。
  • ドキュメント 1 のタイトル: 「アベンジャーズ インフィニティ ウォー」。genre=science fiction; characters=Iron Man, Hulk
  • ドキュメント 2 のタイトル: 「ハリー・ポッター」。genre=Adventure, Fantasy; characters=Hermione, Harry Potter

図 1 は、予測入力が候補を抽出する方法を示しています。

2 つのドキュメントと結果の n-gram
図 1. オートコンプリートに使用される 2 つのドキュメントと結果の n-gram

ドキュメント 1 から、「Avengers」、「Infinity」、「War」、「Avengers Infinity」、「Infinity War」、「Avengers Infinity War」などの n グラム(トライグラムまで)を抽出します。ドキュメント 2 から、「Harry」、「Potter」、「Harry Potter」を生成します。

ユーザーがこのデータソースをクエリするときに「h」と入力すると、次のような候補が表示されることがあります。

  • Harry
  • Hermione
  • Hulk
  • ハリーポッター

ユーザーが「Hermione」を選択してから「a」と入力した場合、オートコンプリートには次のように表示される可能性があります。

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

オートコンプリートは、最後に入力された単語または n-gram を補完しようとします。この例では、「hermione a」で始まるインデックス付きテキストがないため、「a」が「adventure」、「action」、「avengers」に展開されます。これは後方一致の候補です。

Cloud Search のオートコンプリートでは、ドキュメントのコンテンツから最大 5 つの提案と 2 つの人名の提案を返します。

デフォルトでは、ドキュメント タイトルのフレーズがオートコンプリートで表示されます。Suggest API でプロパティ名と値がオートコンプリートされるようにするには、スキーマ プロパティを is_suggestable として明示的にマークする必要があります。

Suggest API と統合する

デフォルトの検索アプリケーションまたは埋め込み可能な検索ウィジェットを使用している場合、Cloud Search はオートコンプリートをネイティブにサポートします。スキーマ プロパティを自動補完する場合は、is_suggestable としてマークしてください。

カスタム検索アプリケーションを構築する場合は、/query/suggest API エンドポイントを使用してオートコンプリートを使用できます。

制限事項

オートコンプリートには次の制限があります。

  • FilterOptions を使用してオートコンプリート フレーズを制限することは、objecttypemimetype などの組み込みフィルタを除き、サポートされていません。
  • ユーザーのクエリ履歴に基づく候補はサポートされていません。
  • 最大 20 個のプロパティを is_suggestable としてマークできます。この上限を引き上げるには、Cloud Search サポートにお問い合わせください。
  • 検索演算子のオートコンプリートは、exact_match_with_operator プロパティに対しては使用できません。
  • オートコンプリートでは、ドキュメントのコンテンツから最大 5 つの候補と 2 つの人名の候補が返されます。
  • オートコンプリートは、ユーザーがアクセスできるドキュメントからのみフレーズを提案します。