Fuzzy查询
2020-11-13 本文已影响0人
caster
对应72.官放文档路径:Query DSL » Term-level queries » Fuzzy query
官方地址如下:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/query-dsl-fuzzy-query.html
返回包含和查询的term相似的terms的文档,以Levenshtein edit distance字符串相似度算法考量
编辑距离是将一个term改为另一个term所需要的字符更改次数,更改操作如下:
- 更改一个字符(box->fox)
- 去掉一个字符(box->ox)
- 添加一个字符(bo->box)
- 转置两个相邻字符(box->obx)
为了找到相似的terms,fuzzy查询会在指定的编辑距离内创建一组基于查询term的所有可能的变形或扩展terms集合。查询然后返回集合内每个term的匹配。
示例:
GET /_search
{
"query": {
"fuzzy": {
"user": {
"value": "ki",
"fuzziness": "AUTO",
"max_expansions": 50,
"prefix_length": 0,
"transpositions": true,
"rewrite": "constant_score"
}
}
}
}
fuzzy的顶级参数:
<filed> :必填,要查询的字段名
<filed> 的参数:
value: 必填,要查询的值
fuzziness: 选填,允许匹配的最大编辑距离
max_expansions: 选填,创建的最大差异变化数,默认为50
prefix_length: 选填,创建terms时保留不变的开始字符数,默认为0
transpositions: 选填,表示是否包含转置两个相邻字符ab->ba,默认为true
rewrite: 选填,用于重写查询方法