美文网首页
基于term和基于全文的搜索

基于term和基于全文的搜索

作者: 7赢月 | 来源:发表于2020-04-20 17:58 被阅读0次

    介绍

    本章会详细介绍基于term和基于全文搜索,通过不同的demo,介绍两种搜索的区别。

    term搜索

    term:最小单位

    • 特点
      -- 种类:Match Query,Range Query,和Exist Query等
      -- term查询,是不做分词处理的。会将输入当做一个整体。
      -- 可以通过Constant Score将查询转化成一个Filtering,避免算法,并利用缓存,可以提高性能

    这里对term查询做一个大小写的demo查询

    // 例子1
    POST /products/_search
    {
      "query": {
        "term": {
          "desc": {
            "value": "iPhone"
          }
        }
      }
    }
    // 例子2
    POST /products/_search
    {
      "query": {
        "term": {
          "desc": {
             "value":"iphone"
          }
        }
      }
    }
    

    如上,因为插入的时候会对大写进行小写的修改,所以以上例1没有命中。

    例1返回结果.png
    例2返回结果

    全文搜索

    • 特点
      -- 种类:Match Query,Match Phrase Query等
      -- 索引和搜索时进行分词,查询字符串先到达一个分词器,产生一个可供查询的词项列表
      -- 查询会对每个词项进行底层的查询,再讲结果进行合并,最后生成一个分数。
    POST groups/_search
    {
      "query": {
        "match_phrase": {
          "names": {
            "query": "Water Water",
            "slop": 100
          }
        }
      }
    }
    
    
    POST groups/_search
    {
      "query": {
        "match_phrase": {
          "names": "Water Smith"
        }
      }
    }
    

    以上结果中使用了match_phrase,其中slop参数标识进行分词后词项之间的距离。

    总结

    本章介绍了term和全文的搜索,通过demo演示了两者的区别。

    引用

    https://www.elastic.co/guide/cn/elasticsearch/guide/current/slop.html

    相关文章

      网友评论

          本文标题:基于term和基于全文的搜索

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