Fuzzy Query(模糊查询)

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=4882439

贡献者 : @小布丁

从5.0.0开始已经标记为过时。

将在6.0中正式移除,使用匹配查询替代模糊查询

模糊查询使用基于 Levenshtein 编辑距离的相似性。

字符串字段

模糊查询生成在模糊性中指定的最大编辑距离内的所有可能的匹配项,然后检查项词典以找出实际存在于索引中的那些项。

这有一个简单示例:

  1. GET /_search
  2. {
  3. "query": {
  4. "fuzzy" : { "user" : "ki" }
  5. }
  6. }

或者可以增加一些高级设置:

  1. GET /_search
  2. {
  3. "query": {
  4. "fuzzy" : {
  5. "user" : {
  6. "value" : "ki",
  7. "boost" : 1.0,
  8. "fuzziness" : 2,
  9. "prefix_length" : 0,
  10. "max_expansions": 100
  11. }
  12. }
  13. }
  14. }

参数列表

参数 说明
fuzziness 最大编辑距离,默认为 AUTO 。请参阅选项名为 “Fuzzinessedit” 的部分。
prefix_length 不会 “fuzzified” 的初始字符数,这有助于减少必须检查的术语的量,默认值为0。
max_expansions 模糊查询将扩展到的最大项数,默认值为50。

如果 prefix_length 设置为0,并且 max_expansions 设置为一个高数字,这个查询可能非常重量级。它可能导致索引中的每个术语被检查!