123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- [[query-dsl-fuzzy-query]]
- === Fuzzy Query
- deprecated[5.0.0, Will be removed without a replacement for `string` fields. Note that the `fuzziness` parameter is still supported for match queries and in suggesters. Use range queries for `date` and `numeric` fields instead.]
- The fuzzy query uses similarity based on Levenshtein edit distance for
- `string` fields, and a `+/-` margin on numeric and date fields.
- ==== String fields
- The `fuzzy` query generates all possible matching terms that are within the
- maximum edit distance specified in `fuzziness` and then checks the term
- dictionary to find out which of those generated terms actually exist in the
- index.
- Here is a simple example:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : { "user" : "ki" }
- }
- --------------------------------------------------
- Or with more advanced settings:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "user" : {
- "value" : "ki",
- "boost" : 1.0,
- "fuzziness" : 2,
- "prefix_length" : 0,
- "max_expansions": 100
- }
- }
- }
- --------------------------------------------------
- [float]
- ===== Parameters
- [horizontal]
- `fuzziness`::
- The maximum edit distance. Defaults to `AUTO`. See <<fuzziness>>.
- `prefix_length`::
- The number of initial characters which will not be ``fuzzified''. This
- helps to reduce the number of terms which must be examined. Defaults
- to `0`.
- `max_expansions`::
- The maximum number of terms that the `fuzzy` query will expand to.
- Defaults to `50`.
- WARNING: This query can be very heavy if `prefix_length` is set to `0` and if
- `max_expansions` is set to a high number. It could result in every term in the
- index being examined!
- [float]
- ==== Numeric and date fields
- Performs a <<query-dsl-range-query>> ``around'' the value using the
- `fuzziness` value as a `+/-` range, where:
- -fuzziness <= field value <= +fuzziness
- For example:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "price" : {
- "value" : 12,
- "fuzziness" : 2
- }
- }
- }
- --------------------------------------------------
- Will result in a range query between 10 and 14. Date fields support
- <<time-units,time values>>, eg:
- [source,js]
- --------------------------------------------------
- {
- "fuzzy" : {
- "created" : {
- "value" : "2010-02-05T12:05:07",
- "fuzziness" : "1d"
- }
- }
- }
- --------------------------------------------------
- See <<fuzziness>> for more details about accepted values.
|