1.模糊查询
关键字:fuzziness
例子:
{
"query": {
"match": {
"code": {
"query": "BIZ102",
"fuzziness": "AUTO"
}
}
}
}
java代码:
QueryBuilders.matchQuery("code", "BIZ102").fuzziness("AUTO")
输出:
规则:
在查询 text 或者 keyword 类型的字段时, fuzziness 可以看做是莱文斯坦距离。
fuzziness 参数的取值如下
0,1,2 表示最大可允许的莱文斯坦距离
AUTO
会根据词项的长度来产生可编辑距离,它还有两个可选参数,形式为AUTO:[low],[high], 分别表示短距离参数和长距离参数;如果没有指定,默认值是 AUTO:3,6 表示的意义如下
0..2
单词长度为 0 到 2 之间时必须要精确匹配,这其实很好理解,单词长度太短是没有相似度可言的,例如 'a' 和 'b'。
3..5
单词长度 3 到 5 个字母时,最大编辑距离为 1
>5
单词长度大于 5 个字母时,最大编辑距离为 2
最佳实践: fuzziness 在绝大多数场合都应该设置成 AUTO
如果不设置 fuziness 参数,查询是精确匹配的。
作者:ReyCG
链接:https://www.jianshu.com/p/8175a101623e