У меня есть поисковый сервис, основанный наasticsearch.
Мне нужно создать функцию DidYouMean на основе фильтра и простого требования:
- совпадение с фильтром двух массивов
- исправить слово для получения безопасного результата (слово, вложенное в запрос, должно давать один или несколько результатов)
- предложить из нескольких полей
Я видел два пути:
- 1 - использовать автозаполнение фразы с функцией match_against (для стандартных полей токенов)
- 2 - использовать поиск с нечеткими (по стандартным лексемам)
С первым решением я должен сделать несколько запросов автозаполнения во втором (автозаполнение не разрешает несколько полей в запросе)
С первым решением мне нужно сделать аппликативную логику, чтобы проверить результат.
Каков наилучший способ выполнить этот поиск? (производительность и загрузка процессора вasticsearch)
Правильно ли использовать стандартное поле токенов для предложения?
https://discuss.elastic.co/t/best-way-to-build-didyoumean-feature/188940