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

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

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

Suggest API は、検索クエリを調べて、英語やスペイン語など、クエリの言語に関するヒントを確認し、それに応じて結果に優先順位を付けます。リクエストの languageCode フィールドは、言語固有の候補を改善するためにも使用されます。

状況の例

たとえば、映画に関するデータを含む次のデータソースがあるとします。

  • データソースには 2 つのドキュメントが含まれています。
  • 各ドキュメントにはタイトル(ItemMetadata.title)と 2 つのプロパティ(genrecharacters)があります。
  • 最初のドキュメントは「Avengers Infinity War」というタイトルで、genre=science fictioncharacters=Iron Man, Hulk
  • 2 つ目の書類は「ハリー・ポッター」というタイトルで、genre=Adventure, Fantasy and登場人物=ハーマイオニー、ハリー・ポッター`があります。

図 1 は、ドキュメントのタイトル、プロパティ、プロパティ値からオートコンプリートの候補がどのように抽出されるかを示しています。

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

ドキュメント 1 から、「アベンジャーズ」、「インフィニティ」、「戦争」、「アベンジャーズ インフィニティ」、「インフィニティ ウォー」、「アベンジャーズ インフィニティ ウォー」の n グラム(最大 3 グラム)を抽出します。ドキュメント 2 と同様に、「ハリー」、「ポッター」、「ハリー ポッター」を生成します。

このデータソースに対してクエリを実行する場合、ユーザーが最初に「h」と入力したとしましょう。ユーザーには、次のような候補が表示されます。

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

ユーザーがオートコンプリート候補「Hermione」を選択し、次のキー入力は文字「a」であるとします。ユーザーに表示されるオートコンプリートの候補は次のとおりです。

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

オートコンプリートは、入力された最後の単語(または ngram)を完成しようとします。 上記の例では、「hermione a」で始まるテキストがないため、「a」を「adventure」、「action」、「avengers」に拡張します。この候補はテール候補と呼ばれ、入力された最後の単語/N グラムのみをオートコンプリートします。

Cloud Search のオートコンプリートは、ドキュメントの内容から最大 5 つの候補と 2 人の人物の候補を返します。

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

オートコンプリート API と統合する

デフォルトの検索アプリケーションまたは埋め込み可能な検索ウィジェットを使用している場合、Cloud Search のオートコンプリート機能は追加作業なしでネイティブにサポートされています。デフォルトでは、ドキュメント タイトルのフレーズがオートコンプリートで表示されます。対応するプロパティ名と値が提案 API でオートコンプリートされるようにするには、スキーマ プロパティを is_suggestable として明示的にマークする必要があります。

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

制限事項

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

  • スキーマで定義された FilterOptions を使用して Cloud Search のオートコンプリート フレーズを制限することは、組み込みフィルタ objectypemimetype、型フィルタを除きます。

  • クエリ履歴に基づく候補(検索アプリケーションで以前にユーザーが実行した検索)はサポートされていません。

  • is_suggestable としてマークできるプロパティは最大 20 個です。この上限は、Cloud Search サポートに連絡して増やすことができます。

  • 検索演算子のオートコンプリートは、exact_match_with_operator を持つプロパティでは使用できません。

  • Cloud Search のオートコンプリートは、ドキュメントの内容から最大 5 つの候補と 2 人の人物の候補を返します。

  • Cloud Search のオートコンプリートは、ユーザーがアクセス権を持つドキュメント内のフレーズのみを提案します。