美文网首页
match、match_phrase、term示例

match、match_phrase、term示例

作者: softgg | 来源:发表于2016-03-31 17:00 被阅读1506次
    • 一、前提内容:
    {
        "note":"东北大学在秦皇岛设立的分校。 东北大学秦皇岛分校是经教育部正式批准成立.",
        "value":"岛设fff"
    }
    {
        "note":"东北大学秦皇岛分校是经教育部正式批准成立,在东北大学统一规划下",
        "value":"岛设"
    }
    

    对应的mapping

    {
      "ik-test": {
        "mappings": {
          "weibo": {
            "properties": {
              "note": {
                "type": "string",
                "analyzer": "ik"
              },
              "value": {
                "type": "string",
                "index": "not_analyzed",
                "analyzer": "ik"
              }
            }
          }
        }
      }
    }
    

    value不进行分析

    {
        "query":{
            "match":{"note":"岛设"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "note":{}
            }
        }
    }
    

    能匹配以上两个文档

    {
        "highlight": {
              "note": [
                "东北大学在秦皇<tag1>岛</tag1>设立的分校。 东北大学秦皇<tag1>岛</tag1>分校是经教育部正式批准成立."
              ]
          }
    }
    

    {
        "highlight": {
              "note": [
                "东北大学秦皇<tag1>岛</tag1>分校是经教育部正式批准成立,在东北大学统一规划下."
              ]
          }
    }
    
    {
        "query":{
            "match_phrase":{"note":"岛设"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "note":{}
            }
        }
    }
    

    则没有匹配任何内容

    {
      "took": 1,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
      }
    }
    
    {
        "query":{
            "term":{"note":"岛设"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "note":{}
            }
        }
    }
    

    则没有匹配任何内容,因为“岛设”没有作为一个词被分词
    但是“东北大学”是有作为词被分词的,可以匹配到

    {
        "query":{
            "term":{"note":"东北大学"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "note":{}
            }
        }
    }
    
    {
        "highlight": {
              "note": [
                "<tag1>东北大学</tag1>在秦皇岛设立的分校。 <tag1>东北大学</tag1>秦皇岛分校是经教育部正式批准成立."
              ]
          }
    }
    

    {
        "highlight": {
              "note": [
                "<tag1>东北大学</tag1>秦皇岛分校是经教育部正式批准成立,在<tag1>东北大学</tag1>统一规划下."
              ]
          }
    }
    

    对于value没有进行分析器分析的,是完整的内容

    {
        "query":{
            "match":{"value":"岛设"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "value":{}
            }
        }
    }
    

    匹配不到任何内容,但是使用term可以匹配一条

    {
        "query":{
            "term":{"value":"岛设"}
        },
        "highlight":{
            "pre_tags":["<tag1>","<tag2>"],
            "post_tags":["</tag1>","</tag2>"],
            "fields":{
                "value":{}
            }
        }
    }
    

    匹配结果

    {
      "took": 3,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1.6931472,
        "hits": [
          {
            "_index": "ik-test",
            "_type": "weibo",
            "_id": "12",
            "_score": 1.6931472,
            "_source": {
              "note": "东北大学秦皇岛分校是经教育部正式批准成立,在东北大学统一规划下",
              "value": "岛设"
            }
          }
        ]
      }
    }
    

    相关文章

      网友评论

          本文标题:match、match_phrase、term示例

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