12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- [[query-dsl-fuzzy-query]]
- === Fuzzy Query
- A fuzzy query that uses similarity based on Levenshtein (edit
- distance) algorithm. This maps to Lucene's `FuzzyQuery`.
- Warning: this query is not very scalable with its default prefix length
- of 0 - in this case, *every* term will be enumerated and cause an edit
- score calculation or `max_expansions` is not set.
- Here is a simple example:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : { "user" : "ki" }
- }
- --------------------------------------------------
- More complex settings can be set (the values here are the default
- values):
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "user" : {
- "value" : "ki",
- "boost" : 1.0,
- "min_similarity" : 0.5,
- "prefix_length" : 0
- }
- }
- }
- --------------------------------------------------
- The `max_expansions` parameter (unbounded by default) controls the
- number of terms the fuzzy query will expand to.
- [float]
- ==== Numeric / Date Fuzzy
- `fuzzy` query on a numeric field will result in a range query "around"
- the value using the `min_similarity` value. For example:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "price" : {
- "value" : 12,
- "min_similarity" : 2
- }
- }
- }
- --------------------------------------------------
- Will result in a range query between 10 and 14. Same applies to dates,
- with support for time format for the `min_similarity` field:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "created" : {
- "value" : "2010-02-05T12:05:07",
- "min_similarity" : "1d"
- }
- }
- }
- --------------------------------------------------
- In the mapping, numeric and date types now allow to configure a
- `fuzzy_factor` mapping value (defaults to 1), which will be used to
- multiply the fuzzy value by it when used in a `query_string` type query.
- For example, for dates, a fuzzy factor of "1d" will result in
- multiplying whatever fuzzy value provided in the min_similarity by it.
- Note, this is explicitly supported since query_string query only allowed
- for similarity valued between 0.0 and 1.0.
|