Настройки нечеткости в ElasticSearch

нужен способ для моей поисковой системы обрабатывать небольшие опечатки в строках поиска и по-прежнему возвращать правильные результаты.

согласно документам ElasticSearch, есть три значения, которые имеют отношение к нечеткому сопоставлению в текстовых запросах:нечеткости, max_expansions и prefix_length.

к сожалению, не так много деталей доступно о том, что именно эти параметры делают, и какие разумные значения для них. Я делаю знайте, что нечеткость должна быть поплавком между 0 и 1.0, а два других-целыми числами.

может ли кто-нибудь рекомендовать разумные значения "начальной точки" для этих параметров? Я уверен, что мне придется настраивать методом проб и ошибок, но я просто ищу приблизительные значения для правильной обработки опечаток и орфографических ошибок.

2 ответов


По словам Нечеткий Запрос doc, значения по умолчанию 0.5 на min_similarity (который выглядит как ваш нечеткости опция), "unbounded" для max_expansions и 0 на prefix_length.

ответ должен помочь вам понять min_similarity. 0.5 кажется, хорошее начало.

prefix_length и max_expansions повлияет на производительность: вы можете попробовать и разработать со значениями по умолчанию, но убедитесь, что он не будет масштабироваться (разработчики lucene даже рассматривали возможность установки значения по умолчанию 2 для prefix_length). Я бы рекомендовал запустить тесты, чтобы найти правильные значения для вашего конкретного случая.


Я счел полезным при использовании нечеткого запроса фактически использовать как запрос термина, так и нечеткий запрос(с тем же термином), чтобы получить результаты для опечаток, но также гарантировать, что экземпляры введенного слова поиска оказались самыми высокими в результатах.

Е. И.

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "_all": search_term
                    }
                },
                {
                    "match": {
                        "_all": {
                            "query": search_term,
                            "fuzziness": "1",
                            "prefix_length": 2
                        }
                    }
                }
            ]
        }
    }
}

еще несколько деталей, перечисленных здесь: https://medium.com/@wampum/fuzzy-queries-ae47b66b325c