ブールプレフィックスクエリの一致

A match_bool_prefix クエリはその入力を分析し、用語から bool クエリ を構築します。最後の用語を除く各用語は term クエリで使用されます。最後の用語は prefix クエリで使用されます。match_bool_prefix クエリのような

Python

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

Ruby

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

Js

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

コンソール

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

分析が quickbrownf という用語を生成する場所は、次の bool クエリに似ています

Python

  1. resp = client.search(
  2. query={
  3. "bool": {
  4. "should": [
  5. {
  6. "term": {
  7. "message": "quick"
  8. }
  9. },
  10. {
  11. "term": {
  12. "message": "brown"
  13. }
  14. },
  15. {
  16. "prefix": {
  17. "message": "f"
  18. }
  19. }
  20. ]
  21. }
  22. },
  23. )
  24. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. bool: {
  5. should: [
  6. {
  7. term: {
  8. message: 'quick'
  9. }
  10. },
  11. {
  12. term: {
  13. message: 'brown'
  14. }
  15. },
  16. {
  17. prefix: {
  18. message: 'f'
  19. }
  20. }
  21. ]
  22. }
  23. }
  24. }
  25. )
  26. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. bool: {
  4. should: [
  5. {
  6. term: {
  7. message: "quick",
  8. },
  9. },
  10. {
  11. term: {
  12. message: "brown",
  13. },
  14. },
  15. {
  16. prefix: {
  17. message: "f",
  18. },
  19. },
  20. ],
  21. },
  22. },
  23. });
  24. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "bool" : {
  5. "should": [
  6. { "term": { "message": "quick" }},
  7. { "term": { "message": "brown" }},
  8. { "prefix": { "message": "f"}}
  9. ]
  10. }
  11. }
  12. }

match_bool_prefix クエリと match_phrase_prefix の重要な違いは、match_phrase_prefix クエリがその用語をフレーズとして一致させるのに対し、match_bool_prefix クエリはその用語を任意の位置で一致させることができることです。上記の例の match_bool_prefix クエリは quick brown fox を含むフィールドと一致する可能性がありますが、brown fox quick とも一致する可能性があります。また、quick という用語、brown という用語、f で始まる用語を含むフィールドとも一致する可能性があり、任意の位置に現れることができます。

パラメータ

デフォルトでは、match_bool_prefix クエリの入力テキストは、クエリされたフィールドのマッピングからのアナライザーを使用して分析されます。異なる検索アナライザーは analyzer パラメータで設定できます

Python

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

Ruby

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

Js

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

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "match_bool_prefix": {
  5. "message": {
  6. "query": "quick brown f",
  7. "analyzer": "keyword"
  8. }
  9. }
  10. }
  11. }

match_bool_prefix クエリは、minimum_should_match および operator パラメータをサポートしており、match クエリ に記載されているように、構築された bool クエリに設定を適用します。構築された bool クエリの句の数は、ほとんどの場合、クエリテキストの分析によって生成された用語の数になります。

fuzzinessprefix_lengthmax_expansionsfuzzy_transpositionsfuzzy_rewrite パラメータは、最終用語を除くすべての用語に対して構築された term サブクエリに適用できます。これらは、最終用語のために構築されたプレフィックスクエリには影響を与えません。