Amazon でのオートコンプリート候補の取得 CloudSearch - Amazon CloudSearch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon でのオートコンプリート候補の取得 CloudSearch

このセクションでは、候補を取得できるようにサジェスタを設定する方法について説明します。候補は、不完全な検索クエリの候補です。候補によって、ユーザーがクエリの入力を完了する前に、一致する可能性のある候補を表示できます。Amazon では CloudSearch、提案は特定のテキストフィールドの内容に基づいています。提案をリクエストすると、Amazon はサジェスタフィールド内の値が指定されたクエリ文字列で始まるすべてのドキュメント CloudSearch を検索します。一致と見なされるには、フィールドの先頭がクエリ文字列と一致する必要があります。返されるデータには、各一致に対するフィールド値とドキュメント ID が含まれます。サジェスタは、クエリ文字列との完全一致を見つけるように設定することも、誤字や脱字を修正できるように文字列との近似一致 (あいまい一致) を実行するように設定することもできます。

suggest API の詳細については、「Search API」の「候補」を参照してください。

Amazon のサジェスタの設定 CloudSearch

サジェスタを設定するには、一致候補を検索するテキストフィールドの名前と、サジェスタの一意の名前を指定する必要があります。候補を使用するフィールドは、値を返すように設定されている必要があります。フィールド内のデータの先頭から 512 バイトだけが候補の生成に使用されます。

サジェスタの名前は、3 文字以上、64 文字以内で、先頭は英字にする必要があります。使用できる文字は、a​~​z (小文字)、0~​9、_ (下線) です。サジェスタ名は、候補を取得するときにクエリ文字列で指定されるため、短い名前を使用することをお勧めします。score という名前は予約済みのため、サジェスタ名として使用できません。

サジェスタは、次の 2 つのオプションもサポートしています。

  • FuzzyMatching — 文字列の一致候補を示すときに使用するあいまいさのレベルを、なし、低、高に設定できます。none の場合、指定された文字列は正確なプレフィックスとして処理されます。low の場合、候補は指定された文字列との異なる箇所が 1 文字以内である必要があります。high の場合、候補は 2 文字まで異なることができます。デフォルトは none です。

  • SortExpression — 候補のソート方法を制御するためにそれぞれのスコアを計算する式を設定します。スコアは最も近い整数に丸められ、下限が 0 で上限が 2^31-1 です。ドキュメントの関連性スコアは提案には計算されていないため、ソート式は _score 値を参照することはできません。数値フィールドまたは既存の式を使用して候補をソートするには、フィールドまたは式の名前を指定します。サジェスタ用の式が設定されていない場合、候補はアルファベット順にソートされます。サジェスタ内に定義される式は、検索リクエストやその他の式で参照することはできません。式を他の目的に使用する必要がある場合は、式をドメイン設定に追加し、サジェスタから名前で参照してください。式の詳細については、「式の設定」を参照してください。

複数のテキストフィールドから候補を取得する必要がある場合は、フィールドごとにサジェスタを定義し、それぞれの候補リクエストを送信して、各サジェスタから一致を取得します。最大 10 個のサジェスタを設定できます。サジェスタは、特にテキストが多いソースフィールドを使用しており、あいまい一致を高に設定している場合、大量のメモリとディスク容量を消費する場合があります。

ヒント

すべてのドキュメントからすべての可能性を使用するようにサジェスタを設定する代わりに、最もよく使用されている 1,000 または 10,000 の検索クエリのインデックスを作成し、それらを使用するようにサジェスタを設定することを検討してください。クエリは、別の Amazon CloudSearch インデックスまたは提案専用のフィールドに保存できます。

サジェスタを定義する最も簡単な方法は、Amazon CloudSearch コンソールのサジェスタページを使用することです。また、AWS SDK か AWS CLI を使用してサジェスタを定義することもできます。

重要

検索ドメインにサジェスタを追加したら、これを使用して候補を取得する前に、インデックス作成を実行する必要があります。ドキュメントは追加や削除されるため、定期的にインデックスを再構築して提案を更新する必要があります。IndexDocuments を呼び出すまでは、追加または削除されたドキュメントは提案に反映されません。

Amazon CloudSearch コンソールを使用したサジェスタの設定

Amazon CloudSearch コンソールから簡単にサジェスタを追加、更新、削除できます。

サジェスタを追加するには
  1. https://console.aws.amazon.com/cloudsearch/home で Amazon CloudSearch コンソールを開きます。

  2. 左側のナビゲーションペインで [Domains] (ドメイン) を選択します。

  3. ドメイン名を選択し、設定を開きます。

  4. [高度な検索オプション] タブに移動します。

  5. [サジェスタ] ペインで [サジェスタを追加] を選択します。

  6. 新しいサジェスタの名前を入力します。

  7. [ソースフィールド] に、候補として使用するテキストフィールドを指定します。

  8. マイナーな誤字や脱字を修正するための候補を含める場合は、[あいまい一致][低] または [高] に設定します。low に設定すると、ユーザーのクエリ文字列と 1 文字だけ異なる用語が候補に含まれます。high に設定すると、最大 2 文字異なる用語が候補に含まれます。

  9. 候補をソートする方法を制御する場合は、[式をソート] フィールドに数式を入力します。式には、単純に候補をソートするために使用する数値フィールド、既存の式の名前、または任意の有効な式を使用できます。式の詳細については、「式の設定」を参照してください。

  10. [Save changes (変更の保存)] をクリックします。

  11. 検索ドメインの候補の設定が終了したら、サジェスタを使用する前に、ドメインのインデックスを作り直す必要があります。インデックス作成を実行するには、ドメインダッシュボードに移動し、[アクション][インデックス作成の実行] を選択します。

AWS CLI でのサジェスタの設定

aws cloudsearch define-suggester コマンドを使用して、サジェスタを追加または更新することができます。サジェスタを削除するには、aws cloudsearch delete-suggester を使用します。

サジェスタを追加または更新するには
  • aws cloudsearch define-suggester コマンドを実行します。--suggester オプションを使用して、JSON にサジェスタの設定を指定します。サジェスタの設定は引用符で囲み、設定内のすべての引用符はバックスラッシュでエスケープする必要があります。サジェスタ設定の形式については、AWS CLIコマンドリファレンスの「定義サジェスタ」を参照してください。例えば、次のコマンドは、mysuggester というサジェスタに title に基づいた候補を返すように設定します。

    aws cloudsearch define-suggester --domain-name movies --suggester "{\"SuggesterName\": \"mysuggester\", \"DocumentSuggesterOptions\": {\"SourceField\":\"title\"}}" { "Suggester": { "Status": { "PendingDeletion": false, "State": "RequiresIndexDocuments", "CreationDate": "2014-06-26T17:26:43Z", "UpdateVersion": 27, "UpdateDate": "2014-06-26T17:26:43Z" }, "Options": { "DocumentSuggesterOptions": { "SourceField": "title" }, "SuggesterName": "mysuggester" } } }

    --fuzzy-matching オプションを使用して、マイナーな誤字や脱字を修正する候補を含めることができます。あいまい一致の有効な値は nonelow、および high です。(デフォルトは none です。) low に設定すると、ユーザーのクエリ文字列と 1 文字だけ異なる用語が候補に含まれます。high に設定すると、最大 2 文字異なる用語が候補に含まれます。例えば、次のコマンドは、ユーザーのクエリ文字列と 1 文字だけ異なる候補を含めるように mysuggester を設定します。

    aws cloudsearch --name mysuggester --source title --fuzzy-matching low

    --sort-expression オプションを使用すると、返される候補のソート方法を制御することができます。ソートには任意の有効な式を使用できます。(通常、ここには、数値フィールドの名前や定義済みの式を指定します。) 例えば、mysuggester によって返される候補を year フィールドの値でソートするには、次のように指定します。

    aws cloudsearch define-suggester --name mysuggester --source title --fuzzy-matching low --sort-expression year
サジェスタを削除するには
  • aws cloudsearch delete-suggester コマンドを実行し、--name オプションを指定します。例えば、mysuggester を削除するには、次のように指定します。

    aws cloudsearch delete-suggester --name mysuggester --delete

AWS SDK を使用したサジェスタの設定

AWS SDKs (Android および iOS SDKs) は、 を含む Amazon CloudSearch Configuration API で定義されているすべての Amazon CloudSearch アクションをサポートしますDefineSuggester。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」(AWS ソフトウェアデベロップメントキット) を参照してください。

Amazon での提案の取得 CloudSearch

HTTP GET を介してドメインの検索エンドポイントの suggest リソースにリクエストを送信することにより、候補を取得します。例:

http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch. amazonaws.com/2013-01-01/suggest?q=oce&suggester=mysuggester

リクエストには、API バージョンを指定して、クエリ文字列を URL エンコードする必要があります。候補リクエストの最大サイズは、HTTP メソッド、URI、プロトコルのバージョンを含め 8190 バイトです。

suggest リソースは、次の 4 つのパラメータをサポートします。

  • q — 候補を取得する文字列。

  • suggester — 使用するサジェスタの名前。

  • size — 取得する候補の数。デフォルトでは、上位 10 件の候補が返されます。(候補は、サジェスタに定義されたソート式に従ってソートされます。 サジェスタにソート式が設定されていない場合、候補はアルファベット順にソートされます。)

  • format — レスポンスのコンテンツタイプで、json または xml。デフォルトでは、候補は JSON 形式で返されます。

q および suggester パラメータは必ず指定しなければなりません。空の文字列に対する候補をリクエストした場合、候補は返されません。size および format パラメータはオプションです。

以下の例では、title フィールドのコンテンツに基づいて、文字列 oce の候補を取得します。

http://search-imdb2-m2brrr7ex7z6sqhgwsjdmcuvd4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/suggest?q=oce&suggester=title { "status": { "rid": "646f5s0oDAr8pVk=", "time-ms": 2 }, "suggest": { "query": "oce", "found": 3, "suggestions": [{ "suggestion": "Ocean's Eleven", "score": 0, "id": "tt0054135" }, { "suggestion": "Ocean's Thirteen", "score": 0, "id": "tt0496806" }, { "suggestion": "Ocean's Twelve", "score": 0, "id": "tt0349903" } ] } }