Elasticsearch2.x 全文检索之——Match Query
来源:互联网 发布:阿里云国际版注册地址 编辑:程序博客网 时间:2024/06/04 08:51
Match Query
Match Query是es官网推荐的首选搜索方式,它的工作流程是先对查询文本分词,然后看分词后的词条是否出在于对应字段上,在字段上出现的词条数越多匹配度越大,所以默认情况下词条与词条之间是通过“or”来连接。
看下面的例子,先创建一个索引并索引4个文档:
PUT /my_index{ "settings": { "number_of_shards": 1 }} POST /my_index/my_type/_bulk{ "index": { "_id": 1 }}{ "title": "The quick brown fox" }{ "index": { "_id": 2 }}{ "title": "The quick brown fox jumps over the lazy dog" }{ "index": { "_id": 3 }}{ "title": "The quick brown fox jumps over the quick dog" }{ "index": { "_id": 4 }}{ "title": "Brown fox brown dog" }
下面的查询,是针对title的match搜索,搜索词:QUICK!
GET /my_index/my_type/_search{ "query": { "match": { "title": "QUICK!" } }}上面的查询处理流程:
- 检查字段类型,查询文本和字段都需要是analyzed string
- 对查询文本进行分词
- 查找匹配的文档,搜索词quick对应的文档时1,2,3
- 对搜索出的文档打分
"hits": [ { "_id": "1", "_score": 0.5, "_source": { "title": "The quick brown fox" } }, { "_id": "3", "_score": 0.44194174, "_source": { "title": "The quick brown fox jumps over the quick dog" } }, { "_id": "2", "_score": 0.3125, "_source": { "title": "The quick brown fox jumps over the lazy dog" } }]
- 文档1排在第一是因为title是最短的
- 文档3排在文档2的前面是因为title中出现了2次quick
match query精度控制
match查询默认在词与词之间使用or操作符,当然我们也可以设置用and进行控制,比如我们希望在搜索时必须出现某几个词,如下:
{ "query": { "match": { "title": { "query": "蜜蜂的蜂窝", "operator": "and" } } }}上面的查询使用ik_smart会分出“蜜蜂”和“蜂窝”,该查询会匹配那些同时出现“蜜蜂”和“蜂窝”的文档。
有时候,我们只通过and和or这种逻辑操作符来控制查询太过绝对,这时可以使用另一个参数来做到and和or中间的一个权衡:minimum_should_match,如下:
GET /my_index/my_type/_search{ "query": { "match": { "title": { "query": "quick brown dog", "minimum_should_match": "75%" } } }}上面的查询文档会分出3个词:“quick”、“brown”、“dog”,如果被搜索的文档中title字段只包含其中两个也是不会被匹配到的,因为匹配两个的情况下,词的匹配百分比是66.6%小于预设的75%,如果将minimum_should_match设置为66%,那么在匹配两个词的情况也会返回文档,因为66%小于66.6%。从上面的例子中我们可以看出通过使用minimum_should_match参数可以更加精确的控制词匹配的百分比。
0 0
- Elasticsearch2.x 全文检索之——Match Query
- Elasticsearch2.x 全文检索之——Match转换Bool Query
- Elasticsearch2.x 全文检索之——文档匹配度
- Elasticsearch2.x 全文检索之——查询合并
- mysql全文检索match()against
- mysql全文检索match()against
- mysql全文检索match() against
- [ElasticSearch2.x]Filter之Cache
- Mysql利用match...against进行全文检索
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 全文检索引擎Solr系列—–全文检索基本原理
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- 例题:枚举排列
- 欢迎使用CSDN-markdown编辑器
- Cocos2d-x3.8.1制作愤怒的小鸟
- 光纤交换机:
- Elasticsearch2.x 全文检索之——Match Query
- [BZOJ3643]Phi的反函数(数学相关+搜索)
- 解决rhel7录屏只能三十秒的执行脚本
- 非递归求集合的幂集
- 中国剩余问题(简介+详解)
- 闪电依旧:德怀恩·韦德
- Java类加载器总结
- iOS直播-实现后台录音并推流
- 设计模式之 单例模式demo