05.full_text match_bool_prefix match_phrase_prefix 查询

1. match_bool_prefix查询

match_bool_prefix查询会analyze其输入,并根据这些 term 构造一个bool查询。term查询中使用除最后一个词以外的每个term。最后一项在前缀查询中使用。 match_bool_prefix查询,例如

GET /_search
{
  "query": {
    "match_bool_prefix" : {
      "message" : "quick brown f"
    }
  }
}

等价于

GET /_search
{
  "query": {
    "bool" : {
      "should": [
        { "term": { "message": "quick" }},
        { "term": { "message": "brown" }},
        { "prefix": { "message": "f"}}
      ]
    }
  }
}

match_bool_prefix查询和match_phrase_prefix之间的重要区别是match_phrase_prefix查询将其 term 作为短语进行匹配,但是match_bool_prefix查询可以在任何位置匹配其 term 。上面的示例match_bool_prefix查询可以匹配包含quich brown fox 的字段,但也可以 brown fox quick 。它也可以匹配出现在任何位置的包含“fast”,“brown”和以f开头的 term 的字段。

1.1. 参数

默认情况下,将使用 analyzer 从查询字段的 mapping 中analyzematch_bool_prefix查询的输入文本。可以使用 analyzer 参数配置其他搜索 analyzer

GET /_search
{
  "query": {
    "match_bool_prefix": {
      "message": {
        "query": "quick brown f",
        "analyzer": "keyword"
      }
    }
  }
}

match_bool_prefix查询支持对match查询所述的minimum_should_match和operator参数,并将设置应用于构造的布尔查询。在大多数情况下,构造的布尔查询中的子句数将是通过analyze查询文本产生的 term 数。

模糊性,prefix_length,max_expansions,fuzzy_transpositions和Fuzzy_rewrite参数可以应用于为除最终 term 以外的所有 term 构造的 term 子查询。它们对为最终 term 构造的前缀查询没有任何影响。

2. 短语查询

就是查询的词必须是按照顺序连着的

GET /_search
{
  "query": {
    "match_phrase": {
      "message": "this is a test"
    }
  }
}

对应的参数可以有
slop: 这个参数设置了连个term之间可以间隔几个term,默认为0,就是term必须是连着的
analyzer: 查询分词器

2.1 phrase_prefix_query

短语前缀查询

GET /_search
{
  "query": {
    "match_phrase_prefix": {
      "message": {
        "query": "quick brown f"
      }
    }
  }
}

query: 查询语句
analyzer: 查询分词器
max_expansions: 前缀查询最多匹配到的term的数量
slop: 在两个matching的term中间最多有slop个term,默认为0
zero_terms_query: 如果query都是停用词怎么办,none,就不会有结果, all,等价match_all搜索

相对而言,使用search_as_you_type 和completion suggester可能会有更好的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值