关于全文搜索elasticsearch中matchQuery和termQuery的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于全文搜索elasticsearch中matchQuery和termQuery的区别相关的知识,希望对你有一定的参考价值。

1.
termQuery
不带分析器,比如说你搜索“中国”,没有分析器你就搜索不到,而
matchQuery
就带了分析器,你搜索“中国”的时候他会自动使用自带的中文分析器帮你去检索,那么你就能搜索到关于“中国”的信息。
2.term是字段的检索,检索时会按照你输入的内容按照完全匹配的模式检索,而match是全文检索,会模糊按照匹配相关度给你找出结果按分值排列。某种意义上来说,term相当于“match_phrase”。
个人理解,希望对你有用!
参考技术A matchQuery是带分词功能的全文搜索
而termQuery是不带分词功能的精准匹配
什么意思呢 matchQuery 会分析词语 比如hello world quick 会拆分这个[hello,wolrd,quick]去搜索
term只会去精准匹配 不带分词

Mysql利用match...against进行全文检索

在电商项目中,最核心的功能之一就是搜索功能,搜索做的好,整个电商平台就是个优秀的平台。一般搜索功能都使用搜索引擎如Lucene、solr、elasticsearch等,虽然这功能比较强大,但是对于一些小公司或者小的电商平台项目有点大材小用了,对于小项目我们可以采用折中的方法,使用ik+MySQL的搜索引擎进行查询,ik用于分词,mysql利用match和against函数进行模糊查询。先写下mysql的match和against的用法。

1 1、给mm_product表name,label字段添加fulltext索引。  
2 ALTER TABLE `mm_product`  
3 ADD FULLTEXT INDEX `name1` (`name`);  
4 ALTER TABLE `mm_product`  
5 ADD FULLTEXT INDEX label1  (label);  

 

1 2、使用match和against函数  
2 select * from mm_product where match(name,label) against(白猫 洗洁精);  
在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.

以上是关于关于全文搜索elasticsearch中matchQuery和termQuery的区别的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 全文搜索

全文搜索之MySQL与ElasticSearch搜索引擎

ElasticSearch_全文搜索引擎目录

ElasticSearch_全文搜索引擎目录

Mysql利用match...against进行全文检索

ElasticSearch查询 第四篇:匹配查询(Match)