翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon での複合クエリの構築 CloudSearch
structured クエリパーサーを使用すると、ブール演算子 and
、or
、not
で一致式を結合することができます。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 より大きくする必要があります。
and
、or
、および に加えてnot
、Amazon CloudSearch 構造化検索構文はいくつかの特殊な演算子をサポートしています。
matchall
— ドメイン内のすべてのドキュメントが一致します。構文:matchall
。near
— あいまいフレーズクエリをサポート。distance
値には、フレーズ内の単語を分割できる単語の最大数を指定します。例えば、(near field='plot' distance=4 'naval mutiny demonstration')
のようにします。near
演算子を使用すると、指定した用語がごく近接していますが、隣接してはいないときに一致します。あいまいフレーズ検索の詳細については、「フレーズの検索」を参照してください。構文:(near field=FIELD distance=N boost=N 'STRING')
。phrase
—text
または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)
。
特定のデータタイプの検索の詳細については、次のセクションを参照してください。構造化検索構文の詳細については、「構造化検索構文」を参照してください。