elasticsearch玩转大数据elasticsearch

二十三、Elasticsearch用match_phrase_p

2017-07-17  本文已影响171人  编程界的小学生

1、解释什么是搜索推荐

比如百度搜elas,他会自动提示我们elastic search或者elastic search权威指南等,这就叫搜索推荐

2、语法

GET my_index/my_type/_search
{
  "query": {
    "match_phrase_prefix": {
      "title": {
        "query": "hello w"
      }
    }
  }
}

3、原理
原理跟match_phrase类似,唯一的区别是把最后一个term作为前缀去搜索

hello就是去进行match,搜索对应的document
w会作为前缀,去扫描整个倒排索引,找到所有w开头的doc
然后找到所有doc中,既包含hello,又包含w开头的字符的doc
根据你的slop去计算,看在slop范围内,能不能让hello w正好跟doc中的hello和w开头的单词的position相匹配。

也可以指定slop,但是只有最后一个term会作为前缀

max_expansions:制定prefix最多匹配多少个term,超过这个数量就不继续匹配了,限定性能。

默认情况下,前缀要扫描所有的倒排索引中的term,去查找w打头的单词,但是这样性能太差。可以用max_expansions限定,w前缀最多匹配多少个term,就不再继续搜索倒排索引了。

GET my_index/my_type/_search
{
  "query": {
    "match_phrase_prefix": {
      "title": {
        "query": "hello w",
        "slop" : 5,
        "max_expansions": 10
      }
    }
  }
}

尽量不要用,因为,最后一个前缀始终要去扫描大量的索引,性能可能会很差!!!!

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg
上一篇下一篇

猜你喜欢

热点阅读