匹配布尔前缀查询
编辑匹配布尔前缀查询编辑
match_bool_prefix
查询会分析其输入并从中构造一个 bool
查询。 除了最后一个词之外,每个词都用于 term
查询。 最后一个词用于 prefix
查询。 像这样的 match_bool_prefix
查询
response = client.search( body: { query: { match_bool_prefix: { message: 'quick brown f' } } } ) puts response
GET /_search { "query": { "match_bool_prefix" : { "message" : "quick brown f" } } }
其中分析产生词项 quick
、brown
和 f
,类似于以下 bool
查询
response = client.search( body: { query: { bool: { should: [ { term: { message: 'quick' } }, { term: { message: 'brown' } }, { prefix: { message: 'f' } } ] } } } ) puts 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
参数配置不同的搜索分析器
response = client.search( body: { query: { match_bool_prefix: { message: { query: 'quick brown f', analyzer: 'keyword' } } } } ) puts 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
子查询。 它们对为最后一个词构造的前缀查询没有任何影响。