美文网首页elasticsearch玩转大数据elasticsearch
二十三、Elasticsearch用match_phrase_p

二十三、Elasticsearch用match_phrase_p

作者: 编程界的小学生 | 来源:发表于2017-07-17 14:52 被阅读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

    相关文章

      网友评论

        本文标题:二十三、Elasticsearch用match_phrase_p

        本文链接:https://www.haomeiwen.com/subject/mdnfkxtx.html