ブールプレフィックスクエリの一致
A match_bool_prefix
クエリはその入力を分析し、用語から bool
クエリ を構築します。最後の用語を除く各用語は term
クエリで使用されます。最後の用語は prefix
クエリで使用されます。match_bool_prefix
クエリのような
Python
resp = client.search(
query={
"match_bool_prefix": {
"message": "quick brown f"
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
match_bool_prefix: {
message: 'quick brown f'
}
}
}
)
puts response
Js
const response = await client.search({
query: {
match_bool_prefix: {
message: "quick brown f",
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"match_bool_prefix" : {
"message" : "quick brown f"
}
}
}
分析が quick
、brown
、f
という用語を生成する場所は、次の bool
クエリに似ています
Python
resp = client.search(
query={
"bool": {
"should": [
{
"term": {
"message": "quick"
}
},
{
"term": {
"message": "brown"
}
},
{
"prefix": {
"message": "f"
}
}
]
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
bool: {
should: [
{
term: {
message: 'quick'
}
},
{
term: {
message: 'brown'
}
},
{
prefix: {
message: 'f'
}
}
]
}
}
}
)
puts response
Js
const response = await client.search({
query: {
bool: {
should: [
{
term: {
message: "quick",
},
},
{
term: {
message: "brown",
},
},
{
prefix: {
message: "f",
},
},
],
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"bool" : {
"should": [
{ "term": { "message": "quick" }},
{ "term": { "message": "brown" }},
{ "prefix": { "message": "f"}}
]
}
}
}
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
resp = client.search(
query={
"match_bool_prefix": {
"message": {
"query": "quick brown f",
"analyzer": "keyword"
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
match_bool_prefix: {
message: {
query: 'quick brown f',
analyzer: 'keyword'
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
match_bool_prefix: {
message: {
query: "quick brown f",
analyzer: "keyword",
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"match_bool_prefix": {
"message": {
"query": "quick brown f",
"analyzer": "keyword"
}
}
}
}
match_bool_prefix
クエリは、minimum_should_match
および operator
パラメータをサポートしており、match
クエリ に記載されているように、構築された bool
クエリに設定を適用します。構築された bool
クエリの句の数は、ほとんどの場合、クエリテキストの分析によって生成された用語の数になります。
fuzziness
、prefix_length
、max_expansions
、fuzzy_transpositions
、fuzzy_rewrite
パラメータは、最終用語を除くすべての用語に対して構築された term
サブクエリに適用できます。これらは、最終用語のために構築されたプレフィックスクエリには影響を与えません。