美文网首页
基于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