ステップ 3: Amazon CloudSearch ドメインを検索する - Amazon CloudSearch

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

ステップ 3: Amazon CloudSearch ドメインを検索する

Amazon CloudSearch コンソールの検索テスターを使用して、サンプル検索リクエストを送信し、結果を表示できます。ウェブブラウザから、または cURL を使用して、サンプル検索リクエストを送信することもできます。アプリケーションでは、任意の HTTP ライブラリを使用して Amazon CloudSearch ドメインに検索トラフィックを送信できます。

検索テスターによる検索

Amazon CloudSearch コンソールの検索テスターを使用すると、サポートされているクエリパーサーのいずれかを使用して、簡易、構造化、フレンド、または dismax のいずれかを使用してサンプル検索リクエストを送信できます。デフォルトでは、リクエストは簡易クエリパーサーで処理されます。選択したパーサーのオプションを指定したり、結果をフィルタリングしてソートしたり、構成されたファセットを参照したりできます。検索結果では、検索ヒットが自動的にハイライトされます。これを行う方法の詳細については、「Amazon CloudSearch での検索ヒットのハイライト」を参照してください。また、サジェスタを選択して、[Search] (検索) フィールドに用語を入力するときに、候補を取得することもできます。(候補を取得する前に、サジェスタを設定する必要があります。 詳細については、「Amazon でのオートコンプリート候補の取得 CloudSearch」を参照してください。)

デフォルトでは、自動的に生成された関連性スコア _score に従って結果がソートされます。結果のランク付け方法のカスタマイズについては、「Amazon CloudSearch での結果のソート」を参照してください。

ドメインを検索するには
  1. https://console.aws.amazon.com/cloudsearch/home で Amazon CloudSearch コンソールに移動します。

  2. 左側のナビゲーションパネルから movies ドメインを選択し、設定を開きます。

  3. [テスト検索を実行] を選択します。

  4. 単純なテキスト検索を実行するには、検索クエリを入力して [実行] を選択します。デフォルトでは、すべての text および text-array フィールドが検索されます。

特定のフィールドを検索するには、[オプション] を展開し、[検索フィールド] に検索したいフィールドのリストをカンマ区切りで入力します。キャレット (^) を使用して各フィールドの重みを追加すると、検索結果の各フィールドの相対的な重要度を制御できます。例えば、一致する各ドキュメントの関連性スコアを計算するときに、title^5, description フィールドのヒット数よりも 5 倍多い title 重量ヒットを description フィールドで指定するなどです。

構造化クエリ構文を使用するには、[クエリパーサー] メニューから [構造化] を選択します。構造化クエリパーサーを選択したら、[検索] フィールドに構造化クエリを入力して [実行] を選択します。例えば、2000 年以前にリリースされたタイトルに star のあるすべての映画を見つけるには、(and title:'star' year:{,2000]) を入力します。詳細については、「複合クエリの作成」を参照してください。Lucene または DisMax クエリを送信するには、適切なクエリパーサーを選択します。

選択したクエリパーサーに追加オプションを指定して、デフォルトの演算子を設定し、クエリで使用できる演算子を制御できます。詳細については、「検索リクエストのパラメータ」を参照してください。

リクエスト URL をコピーして貼り付けて、リクエストを送信し、ウェブブラウザからレスポンスを表示できます。リクエストは HTTP または HTTPS 経由で送信できます。

ウェブブラウザからの検索リクエストの送信

任意のウェブブラウザから検索エンドポイントに検索リクエストを直接送信できます。任意のクエリパーサー (simple、structured、lucene、または dismax) を使用し、さまざまなオプションを指定して、検索の制約、ファセット情報のリクエスト、ランク付けのカスタマイズ、および結果で返される情報の制御を行うことができます。

例えば、movies ドメインを検索し、利用できるすべての Star Wars 映画のタイトルを取得するには、検索エンドポイントに次の検索文字列を追加します。(2013-01-01 は API のバージョンであり、指定する必要があります。)

/2013-01-01/search?q=star+wars&return=title
注記

ドメインの検索エンドポイントは、ドメインのダッシュボードに表示されます。AWS マネジメントコンソールから検索を実行して、未加工のリクエストとレスポンスを表示し、[Search Request] (検索リクエスト) フィールドからリクエストの URL をコピーすることもできます。ドメインの検索およびドキュメントのサービスエンドポイントは、ドメインが存在している間変わりません。

デフォルトでは、Amazon はレスポンスを JSON で CloudSearch 返します。また、format パラメータを format=xml のように指定して、検索結果を XML 形式で取得できます (エラーは、発生した場所によって、JSON または XML で返すことができます)。

数値フィールドの検索

構造化クエリ構文 q.parser=structured を使用して、特定の数値属性を持つドキュメントを 見つけることができます。任意の数値フィールド (doubledouble-arrayintint-array) 内の正確な値または値の範囲を検索できます。範囲を検索するには、上限と下限をカンマで区切って指定し、範囲を角括弧または中括弧で囲みます。上限と下限を含める場合は角括弧 ([,]) を使用し、上限と下限を除外する場合は中括弧 ({,}) を使用します。例:

  • year:2000 は、year フィールドの値が 2000 であるドキュメントに一致します。

  • year:[2000,} は、year フィールドの値が 2000 以上であるドキュメントに一致します

  • year:{,2000] は、year フィールドの値が 2000 以下であるドキュメントに一致します

  • year:[2000,2011] は、year フィールドの値が 2000~2011 (両端の値を含む) のドキュメントに一致します。

  • year:{2000,2011} は、year フィールドの値が 200 ~2011 (両端の値を含まない) のドキュメントに一致します

日付フィールドで特定の日付または日付範囲を検索することもできますが、次のように各日付文字列を一重引用符で囲む必要があります。release_date:['2000-01-01T00:00:00Z','2011-01-01T00:00:00Z']

例えば、次の構造化クエリでは、title フィールドに「star」が含まれている 2000 年よりも前にリリースされた一致する映画がすべて検出され、それぞれのタイトル、年、および関連性スコアが返されます。

q=(and title:'star' year:{,2000])&q.parser=structured&return=title,year,_score

レスポンスには、リクエストのステータス、一致するドキュメントの数、各ヒットについてリクエストされたフィールドが表示されます。

{ "status": { "rid": "hLPckLsoEQoELQo=", "time-ms": 2 }, "hits": { "found": 15, "start": 0, "hit": [ { "id": "tt0076759", "fields": { "title": "Star Wars", "year": "1977", "_score": "5.7601414" } }, . . . { "id": "tt0088170", "fields": { "title": "Star Trek III: The Search for Spock", "year": "1984", "_score": "4.2371693" } } ] } }

検索クエリの作成の詳細については、「Amazon でのデータの検索 CloudSearch」を参照してください。

検索結果のソート

デフォルトでは、Amazon は自動生成された関連性 に従って検索結果を CloudSearch ソートします_score。結果のランク付けの方法を変更するには、検索リクエストで sort パラメータを使用して、ランク付けに使用するフィールドまたは式を指定します (式は、一致するドキュメントのセット内の各ドキュメントについて評価できるカスタム数値式です。独自の式の定義についての詳細は、式の設定 を参照してください。)

sort パラメータでテキストフィールドを指定した場合、結果はそのフィールドのアルファベット順にソートされます。例えば、movies ドメインの検索結果をタイトルのアルファベット順にソートするには、クエリ文字列に &sort=title asc を追加します。

2013-01-01/search?q=(and genres:'Sci-Fi' year:{,2000])&q.parser=structured&return=title,year&sort=title asc

ソート方向は、asc (昇順) または desc (降順) で明示的に指定する必要があることに注意してください。アルファベット順にソートすると、Amazon は Unicode コードポイントで CloudSearch ソートします。つまり、数字が文字の前に、大文字が小文字の前に来ます。数は文字列としてソートされ、例えば 10 は 2 の前に来ます。

同様に、sort パラメータで整数フィールドを指定して、結果を数値でソートすることができます。

フィールドまたは式のカンマ区切りリストを指定する場合は、最初のフィールドまたは式はプライマリソート条件として使用され、2 番目はセカンダリソート条件として使用され、以降も同様です。

結果のランク付けの詳細については、「Amazon CloudSearch での結果のソート」を参照してください。

ファセット情報の取得

ファセットとは、検索結果の絞り込みとフィルタ処理を行うために使用するカテゴリを表すインデックスフィールドです。Amazon に検索リクエストを送信すると CloudSearch、ファセット情報をリクエストして、ファセット内の同じ値を共有するヒット数を調べることができます。この情報を検索結果と共に表示して、ユーザーはそれを利用して対話的に検索結果を絞り込むことができます。(これは多くの場合、ファセットナビゲーションまたはファセット検索と呼ばれます)。

ファセットには、ドメイン設定でファセットが有効になっている日付、リテラル、または数値フィールドを指定できます。Amazon は、ファセットごとに、同じ値を共有するヒットの数を CloudSearch 計算します。バケットを定義して、ファセット値の特定のサブセットのファセット数を計算できます。一致するバケットのみがファセット結果に含まれます。

検索結果を使用してファセット数を取得するには
  • ファセットを計算するフィールドを指定するには、facet.FIELD オプションを使用します。サンプル IMDb の movies データの場合、次のフィールドについてファセットが有効になっています。genresrankratingrelease_daterunning_time_secsyear。ファセットオプションは、JSON オブジェクトとして指定されます。JSON オブジェクトが空の場合 (facet.FIELD={})、ファセット数はすべてのフィールド値について計算され、ファセットはファセット数によってソートされ、上位 10 個のファセットが結果で返されます。

    q=star&return=title&facet.genres={}

ファセットは、結果のヒットの下に表示されます。

facets": { "genres": { "buckets": [ {"value": "Comedy","count": 41}, . . . {"value": "Sport", "count": 7} ] } }

オプションを指定することによって、選択したフィールド値のファセットの計算、結果に含めるファセット値の最大数の指定、ファセットのソート方法の制御を行うことができます。

選択したフィールド値のファセット数を計算するバケットを定義するには、buckets オプションを使用します。例えば、次のリクエストは、year フィールドのファセット数を 10 年ごとにソートします。

q=star&facet.year={buckets:["[1970,1979]","[1980,1989]","[1990,1999]"]}

これによって、ファセット数を 3 つの指定された範囲に制限します。

"facets": { "year": { "buckets": [ {"value": "[1970,1979]", "count": 3}, {"value": "[1980,1989]","count": 7}, {"value": "[1990,1999]","count": 12} ] } }

ファセットオプションの指定の詳細については、「Amazon CloudSearch でファセット情報を取得して使用」を参照してください。

検索ハイライトの取得

検索ハイライトは、フィールド内で検索用語が発生する場所を示すテキストまたはテキスト配列フィールドの一部です。

検索結果と共にハイライト情報を取得するには
  • ハイライトを取得するテキストまたはテキスト配列フィールドを指定するには、highlight.FIELD オプションを使用します。このフィールドは、ドメインのインデックス作成オプションでハイライトが有効になっている必要があります。サンプル IMDb の movies データの場合、次のフィールドについてハイライトが有効になっています。actorsdirectorsplottitle。ハイライトオプションは、JSON オブジェクトとして指定されます。JSON オブジェクトが空の場合、Amazon CloudSearch は highlight.FIELD={}HTML 強調タグ、、および抜粋を HTML として囲むことで<em>term</em>、検索語のすべての出現箇所を強調表示します ()。

    q=title:'star'&q.parser=structured&return=_no_fields&highlight.title={}

ハイライト情報は、各検索ヒットと共に含まれています。

hits": { "found": 29, "start": 0, "hit": [ { "id": "tt0796366", "highlights": { "title": "<em>Star</em> Trek" } }, . . . { "id": "tt2488496", "highlights": { "title": "<em>Star</em> Wars: Episode VII" } } ] }

ハイライトオプションの指定の詳細については、「Amazon CloudSearch での検索ヒットのハイライト」を参照してください。