フレーズプレフィックスクエリ

提供されたテキストの単語を、提供された同じ順序で含む文書を返します。提供されたテキストの最後の用語はプレフィックスとして扱われ、その用語で始まる任意の単語と一致します。

例リクエスト

次の検索は、quick brown fフィールドにmessageで始まるフレーズを含む文書を返します。

この検索は、messageの値がquick brown foxまたはtwo quick brown ferretsである場合に一致しますが、the fox is quick and brownには一致しません。

Python

  1. resp = client.search(
  2. query={
  3. "match_phrase_prefix": {
  4. "message": {
  5. "query": "quick brown f"
  6. }
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. match_phrase_prefix: {
  5. message: {
  6. query: 'quick brown f'
  7. }
  8. }
  9. }
  10. }
  11. )
  12. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. match_phrase_prefix: {
  4. message: {
  5. query: "quick brown f",
  6. },
  7. },
  8. },
  9. });
  10. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "match_phrase_prefix": {
  5. "message": {
  6. "query": "quick brown f"
  7. }
  8. }
  9. }
  10. }

match_phrase_prefixのトップレベルパラメータ

  • <field>
  • (必須、オブジェクト) 検索したいフィールド。

のパラメータ

  • query
  • (必須、文字列) 提供された<field>で見つけたいテキスト。
    match_phrase_prefixクエリは、検索を実行する前に提供されたテキストをトークンに分析します。このテキストの最後の用語はプレフィックスとして扱われ、その用語で始まる任意の単語と一致します。
  • analyzer
  • (オプション、文字列) query値のテキストをトークンに変換するために使用されるアナライザー<field>にマッピングされたインデックス時アナライザーがデフォルトです。アナライザーがマッピングされていない場合、インデックスのデフォルトアナライザーが使用されます。
  • max_expansions
  • (オプション、整数) query値の最後に提供された用語が展開される最大用語数。デフォルトは50です。
  • slop
  • (オプション、整数) 一致するトークン間で許可される最大位置数。デフォルトは0です。転置された用語は2のスロップを持ちます。
  • zero_terms_query
  • (オプション、文字列) analyzerがすべてのトークンを削除する場合に文書が返されないかどうかを示します。これは、stopフィルターを使用する場合などです。有効な値は次のとおりです:
    • none (デフォルト)
    • analyzerがすべてのトークンを削除する場合、文書は返されません。
    • all
    • match_allクエリに似て、すべての文書を返します。

ノート

検索オートコンプリートのためのフレーズプレフィックスクエリの使用

設定は簡単ですが、match_phrase_prefixクエリを検索オートコンプリートに使用すると、時々混乱を招く結果が得られることがあります。

たとえば、クエリ文字列quick brown fを考えてみてください。このクエリは、quickbrownからフレーズクエリを作成することによって機能します(つまり、quickという用語が存在し、brownという用語の後に続く必要があります)。次に、ソートされた用語辞書を見て、fで始まる最初の50の用語を見つけ、これらの用語をフレーズクエリに追加します。

問題は、最初の50の用語にfoxという用語が含まれていない可能性があるため、フレーズquick brown foxが見つからないことです。通常、これは問題ではなく、ユーザーは探している単語が表示されるまで、さらに文字を入力し続けます。

検索中にタイプするのためのより良い解決策については、補完サジェスターsearch_as_you_typeフィールドタイプを参照してください。