Hello,
Please see the below (ES Version : 6.2.3):
- Mapping:
PUT /demo_suggestions
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer_with_edge_ngram_filter": {
"tokenizer": "standard",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding",
"trim",
"classic",
"unique",
"custom_edge_ngram_filter"
]
}
},
"filter": {
"custom_edge_ngram_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"suggest": {
"type": "completion"
},
"query_string": {
"type": "keyword",
"fields": {
"edge_ngram_filter": {
"type": "text",
"analyzer": "custom_analyzer_with_edge_ngram_filter",
"search_analyzer": "standard"
}
}
}
}
}
}
}
- Data
PUT /demo_suggestions/_doc/1?refresh
{
"suggest" : {
"input": [ "crime" ]
},
"query_string": "crime"
}
-
Query
GET demo_suggestions/_search { "query": { "match" : { "query_string.edge_ngram_filter" : { "query" : "crik", "fuzziness": "AUTO:5,8", "prefix_length": 3 } } }, "suggest": { "afdskjlda-suggest" : { "prefix" : "crik", "completion" : { "field" : "suggest", "fuzzy" : { "fuzziness" : "AUTO:5,8", "prefix_length": 3 } } } } }
-
Response
{ "took": 0, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 0, "max_score": null, "hits": [] }, "suggest": { "afdskjlda-suggest": [ { "text": "crik", "offset": 0, "length": 4, "options": [ { "text": "crime", "_index": "demo_suggestions", "_type": "_doc", "_id": "1", "_score": 3, "_source": { "suggest": { "input": [ "crime" ] }, "query_string": "crime" } } ] } ] } }
Why is it that the hits is empty and the suggest has a result? IMHO, since fuzziness is defined as "AUTO:5,8" it should not look for fuzzy results on query strings of length less than 5 chars. Both, hits and suggest section should be empty. The problem disappears when the "min_length" is increased to 6 for suggest query. Please advise.