Amazon での複合クエリの構築 CloudSearch - Amazon CloudSearch

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

Amazon での複合クエリの構築 CloudSearch

structured クエリパーサーを使用すると、ブール演算子 andornot で一致式を結合することができます。structured クエリパーサーを選択するには、クエリに q.parser=structured を含めます。構造化クエリ演算子は、prefix 演算子として指定されます。構文は次のとおりです。

  • (and boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)

  • (or boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)

  • (not boost=N EXPRESSION)

例えば、次のクエリは、サンプルデータセット内でタイトルに star が含まれ、actors フィールドに Harrison Ford または William Shatner のいずれかの名前があり、Zachary Quinto の名前のないすべての映画と一致します。

(and title:'star' (or actors:'Harrison Ford' actors:'William Shatner')(not actors:'Zachary Quinto'))

構造化クエリ演算子を使用するときは、演算子の名前、演算子のオプション、および操作対象の一致式を (OPERATOR OPTIONS EXPRESSION) のように指定します。一致式には、単純な文字列または複合クエリのサブクラスを使用できます。オプションは語句の前に指定する必要があります。例えば、(and (not field=genres 'Sci-Fi')(or (term field=title boost=2 'star')(term field=plot 'star'))) です。

式の評価の順番は、括弧で制御します。式を括弧で囲んだ場合、その式が最初に評価され、その結果の値が複合クエリの残り部分の評価に使用されます。

重要

クエリ文字列の特殊文字は、URL エンコードする必要があります。例えば、構造化クエリでの = 演算子は、%3D: (term+field%3Dtitle+'star' としてエンコードする必要があります。) 特殊文字が URL エンコードされていない場合、Amazon はInvalidQueryStringエラー CloudSearch を返します。URL エンコードの詳細については、W3C の「HTML URL エンコードリファレンス」を参照してください。

例えば、次のクエリは title フィールドを検索対象として語句 star wars を検索し、year フィールドの値が 2000 より小さいものを除外します。

(and (phrase field='title' 'star wars') (not (range field=year {,2000})))

この検索リクエストを送信するには、クエリ文字列をエンコードして、structured パラメータをつけた q.parser クエリパーサーを指定します。

http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch. amazonaws.com/2013-01-01/search?q=(and+(phrase+field='title'+'star wars')+(not+(range+field%3Dyear+{,2000})))&q.parser=structured

構造化クエリの構文を使用すると、複数のフィールドに対する検索を結合できます。検索するフィールドを指定しない場合は、すべての text および text-array フィールドが検索されます。例えば、次のクエリでは、すべての text および text-array フィールドで用語 star (主役) を検索し、actors フィールドで Zachary Quinto (ザカリー・クイント) を含むドキュメントは除外されます。

(and 'star' (not actors:'Zachary Quinto'))

boost 値を指定して、複合クエリのある式の重要度を他より高くすることができます。boost 値は一致ドキュメントのスコアを高くします。例えば、次のクエリでは、star という用語が description フィールドではなく title フィールドに存在している場合、一致の重要度が高くなります。

(and (range field=year [2013,}) (or (term field=title boost=2 'star') (term field=plot 'star'))

Boost 値は 0 より大きくする必要があります。

andor、および に加えてnot、Amazon CloudSearch 構造化検索構文はいくつかの特殊な演算子をサポートしています。

  • matchall — ドメイン内のすべてのドキュメントが一致します。構文: matchall

  • near — あいまいフレーズクエリをサポート。distance 値には、フレーズ内の単語を分割できる単語の最大数を指定します。例えば、(near field='plot' distance=4 'naval mutiny demonstration') のようにします。near 演算子を使用すると、指定した用語がごく近接していますが、隣接してはいないときに一致します。あいまいフレーズ検索の詳細については、「フレーズの検索」を参照してください。構文: (near field=FIELD distance=N boost=N 'STRING')

  • phrasetext または text-array フィールドでのフレーズの検索。例えば、(phrase field="title" 'teenage mutant ninja') です。式に一致するドキュメントの増強をサポートします。フレーズ検索の詳細については、「フレーズの検索」を参照してください。構文: (phrase field=FIELD boost=N 'STRING')

  • prefix — テキスト、テキスト配列、リテラル、リテラル配列フィールドで指定されたプレフィックス単独またはその後に文字が続くものを検索します。例えば、 となります。(prefix field='title' 'wait')式に一致するドキュメントの増強をサポートします。プレフィックス検索の詳細については、「プレフィックスの検索.構文: (prefix field=FIELD boost=N 'STRING')」を参照してください。

  • range — 数値フィールドで値の範囲を検索。例: (range field=year [2000,2013])。範囲検索の詳細については、「値の範囲の検索」を参照してください。構文: (range field=FIELD boost=N RANGE)

  • term — 任意のフィールドで個々の用語または値を検索。例: (and (term field=title 'star')(term field=year 1977))。構文: (term field=FIELD boost=N 'STRING'|VALUE)

特定のデータタイプの検索の詳細については、次のセクションを参照してください。構造化検索構文の詳細については、「構造化検索構文」を参照してください。