看看match_phrase查询原理就知道为什么会命中数据了。 match_phrase查询分析文本并根据分析的文本创建一个短语查询。match_phrase会将检索关键词分词。match_phrase的分词结果必须在被检索字段的分词中都包含,而且顺序必须相同,而且默认必须都是连续的。 问题解决 换分词器 第一想法是换分词器,用ik分词器 删除索引 DELETE...
//匹配所有索引库 "settings": { "number_of_shards": 1 }, //匹配到的索引库只创建1个主分片 "mappings": { "_default_": { "_all": { "enabled": false //关闭所有类型的_all字段 }, "dynamic_templates": [ { "string_as_text": { "match_mapping_type": "string",//匹配类型string "m...
原文链接:es笔记三之term,match,match_phrase 等查询方法介绍 首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。 keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理 text 存储数据的时候会对字符串进行分词处理,然后存储。 而对于查询方法, term 是精确查询,match...
match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配。 1.3.match_phrase 1)match_phrase匹配keyword字段。 这个同上必须跟keywork一致才可以。 2)match_phrase匹配text字段。 match_phrase是分词的,text也是分词的。match_phrase的分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都...
match_phrase是分词的,text也是分词的。match_phrase的分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都是连续的。 这是成功的。 如果不是连续的,就会失败。 4. 1)query_string查询key类型的字段,试过了,无法查询。 失败的,无法查询。
原文链接:es笔记三之term,match,match_phrase 等查询方法介绍 首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。 keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理 text 存储数据的时候会对字符串进行分词处理,然后存储。
match & phrase_match & term 在明确了上诉说法后,现在来理解 match、phrase_match 和 term 查询。大致理解如下: term 查询:查看 raw_query 是否在 text_array_n 中( term 查询不会发生切词,所以没有 query_array); match 查询: operator:or ,只要 query_array 中的任意一个元素在 text_array_n 中即可...
match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配。 image image 成功。如果都不相同就失败了。 3. match_phrase match_phrase匹配keyword字段。 这个同上必须跟keywork一致才可以。 image image 只有这种情况才是成功的。 match_phrase匹配text字段。
通过分词测试,发现Token【我】与【系统学】的position差值为1(等于slop的值),所以文档4也被检索出来了。 ps:如果没看明白,那就来看下match_phrase query对应到mysql是怎样的吧! 数据的倒排序索引 4.2match_phrase query对应到mysql 代码语言:javascript
match_phrase_prefix 匹配前缀,比如对于 address 值为 'read a book' 的数据,我们只知道的值是 'read a bo',想要根据这个搜索词搜索完整的数据,就可以用到 match_phrase_prefix。 他的用法是这样的,先将检索词分词,然后将最后一个分词结果单独去匹配,所以这个搜索词的过程就是先根据 'read a' 的分词结果搜索...