Настройки нечеткости в 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