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

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

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

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

シナリオの例

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

  • データソースには 2 つのドキュメントが含まれています。
  • 各ドキュメントには、タイトル(ItemMetadata.title)と 2 つのプロパティ(genrecharacters)があります。
  • 最初のドキュメントは、タイトルが「Avengers Infinity War」で、genre=science fictioncharacters=Iron Man, Hulk とされています。
  • 2 番目のドキュメントは、タイトルが「Harry Potter」で、genre=Adventure, Fantasy andcharacters=Hermione, Harry Potter とされています。

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

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

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

このデータソースをクエリするとき、ユーザー入力の先頭が「h」だったとしましょう。ユーザーに表示される候補は次のとおりです。

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

ユーザーがオートコンプリート候補「Hermione」を選択し、ユーザーの次のキーストロークが文字「a」だったとしましょう。ユーザーに表示されるオートコンプリートの候補は次のとおりです。

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

オートコンプリートでは、入力されている最後の単語(または ngram)の補完が試行されます。前の例では、「a」が「adventure」、「action」、「avengers」にのみ展開されます。「hermione a」で始まるテキストはないためです。この提案はテール提案と呼ばれ、最後に入力された単語または n-gram のみがオートコンプリートされます。

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

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

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

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

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

制限事項

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

  • スキーマで定義された FilterOptions を使用して Cloud Search の自動入力フレーズを制限することは、objectypemimetype、タイプのフィルタなどの組み込みフィルタ以外はサポートされていません。

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

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

  • 検索演算子のオートコンプリートは、exact_match_with_operator を含むプロパティに対しては使用できません。

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

  • Cloud Search のオートコンプリートは、ユーザーがアクセスできるドキュメントからのみフレーズを提案します。