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所需要的字符更改次数,更改操作如下:

  1. 更改一个字符(box->fox)
  2. 去掉一个字符(box->ox)
  3. 添加一个字符(bo->box)
  4. 转置两个相邻字符(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: 选填,用于重写查询方法

上一篇下一篇

猜你喜欢

热点阅读