前言:
眼前你们对“matchjava”大致比较讲究,我们都需要剖析一些“matchjava”的相关知识。那么小编在网络上汇集了一些关于“matchjava””的相关内容,希望姐妹们能喜欢,咱们一起来学习一下吧!精确查询
# 精确查询,name字段类型是keyword,name字段值必须完全匹配[李四]才能查询出来,查询[李]或者[四]都没有没有结果返回的,因为keyword类型字段不会进行分词GET /index_name/_search{ "query":{ "match":{ "name":"李四" } }}# 输出结果{ "took":0, "timed_out":false, "_shards":{ "total":2, "successful":2, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.2039728, "hits":[ { "_index":"index_name", "_type":"_doc", "_id":"KWcyrYYBhncLYm9cWbGB", "_score":1.2039728, "_source":{ "id":1002, "name":"李四", "age":13, "desc":"我的自我描2述", "birthday":"2023-02-03" } } ] }}
精确度匹配
match 查询支持 minimum_should_match 最小匹配参数, 可以指定必须匹配的词项数用来表示一个文档是否相关。我们可以将其设置为某个具体数字(指需要匹配倒排索引的词的数量),更常用的做法是将其设置为一个百分数,因为我们无法控制用户搜索时输入的单词数量。
# 精确度匹配GET /index_name/_search{ "query":{ "match":{ "desc":{ "query":"超 人", "minimum_should_match":"2" } } }}# 输出结果{ "took":1, "timed_out":false, "_shards":{ "total":2, "successful":2, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":2, "relation":"eq" }, "max_score":3.2245533, "hits":[ { "_index":"index_name", "_type":"_doc", "_id":"2mc5rYYBhncLYm9cifcv", "_score":3.2245533, "_source":{ "id":1003, "name":"王五", "age":14, "desc":"超人", "birthday":"2023-02-04" } }, { "_index":"index_name", "_type":"_doc", "_id":"Rmc5rYYBhncLYm9c_fxA", "_score":0.68324494, "_source":{ "id":1005, "name":"王五", "age":14, "desc":"超人的平凡人生", "birthday":"2023-02-04" } } ] }}
只会返回匹配上“超” 和 “人” 两个词的文档返回,如果 minimum_should_match 是1,则只要匹配上其中一个词,文档就会返回。
正向匹配度-使用百分比
比如"minimum_should_match":75%,可以配置一个百分比,至少optional clauses(可选子句)至少满足75%,这里是向下取整的。
比如有5个clause,5*75%=3.75,向下取整为3,也就是至少需要match 3个clause。注意:由于是向下取整,所以尤其针对短的query,我们把"minimum_should_match"设为大于100% 还是可以得到结果(如下,130*3=3.90,向下取整为3)。
# 正向匹配度-使用百分比GET /index_name/_search{ "query":{ "match":{ "desc":{ "query":"超 人 的", "minimum_should_match":"130%" } } }}# 输出结果{ "took":1, "timed_out":false, "_shards":{ "total":2, "successful":2, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":0.97092706, "hits":[ { "_index":"index_name", "_type":"_doc", "_id":"Rmc5rYYBhncLYm9c_fxA", "_score":0.97092706, "_source":{ "id":1005, "name":"王五", "age":14, "desc":"超人的平凡人生", "birthday":"2023-02-04" } } ] }}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #matchjava