Запрос Elasticsearch с нечеткостью AUTO не работает должным образом - PullRequest
1 голос
/ 15 мая 2019

Из документации Elasticsearch относительно нечеткости:

AUTO

Генерирует расстояние редактирования на основе длины термина. Опционально могут быть предоставлены аргументы для низкого и высокого расстояния AUTO: [low], [high]. Если не указано, значения по умолчанию 3 и 6, что эквивалентно AUTO: 3,6, что для длины:

0..2 Должен точно соответствовать

3..5 Разрешено одно редактирование

> 5 Допускается два редактирования

Однако, когда я пытаюсь указать аргументы для низкого и большого расстояния в поисковом запросе, результат не соответствует ожиданиям.

Я использую Elasticsearch 6.6.0 со следующим отображением индекса:

{
    "fuzzy_test": {
        "mappings": {
            "_doc": {
                "properties": {
                    "description": {
                       "type": "text"
                    },
                    "id": {
                        "type": "keyword"
                    }
                }
            }
        }
    }
}

Вставка простого документа:

{
    "id": "1",
    "description": "hello world"
}

И следующий поисковый запрос:

{
    "size": 10,
    "timeout": "30s",
    "query": {
        "match": {
            "description": {
                "query": "helqo",
                "fuzziness": "AUTO:7,10"
            }
        }
    }
}

Я предполагал, что fuzziness: AUTO: 7,10 будет означать, что для входного члена с длиной <= 6 будут возвращены только документы с точным соответствием. Тем не менее, вот результат моего запроса: </p>

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.23014566,
        "hits": [
            {
                "_index": "fuzzy_test",
                "_type": "_doc",
                "_id": "OQtUu2oBABnEwrgM3Ejr",
                "_score": 0.23014566,
                "_source": {
                    "id": "1",
                    "description": "hello world"
                }
            }
        ]
    }
}

1 Ответ

0 голосов
/ 16 мая 2019

Это странно, но похоже, что ошибка существует только в версии Elasticsearch 6.6.0.Я пробовал 6.4.2 и 6.6.2, и они оба прекрасно работают.

...