# Fuzzy Query(模糊查询)

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

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

贡献者 : @小布丁

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

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

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

## 字符串字段

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

这有一个简单示例：

```
GET /_search
{
    "query": {
       "fuzzy" : { "user" : "ki" }
    }
}
```

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

```
GET /_search
{
    "query": {
        "fuzzy" : {
            "user" : {
                "value" :         "ki",
                    "boost" :         1.0,
                    "fuzziness" :     2,
                    "prefix_length" : 0,
                    "max_expansions": 100
            }
        }
    }
}
```

### 参数列表

| 参数 | 说明 |
| --- | --- |
| _fuzziness_ | 最大编辑距离，默认为 **AUTO** 。请参阅选项名为 **[“Fuzzinessedit”](https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness)** 的部分。 |
| _prefix_length_  | 不会 **“fuzzified”** 的初始字符数，这有助于减少必须检查的术语的量，默认值为0。 |
| _max_expansions_  | **模糊查询**将扩展到的最大项数，默认值为50。 |

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