Elasticsearch · Elasticsearch 8.19.12
Lamoda разбирает поисковый запрос на сущности — категорию, бренд, цвет — и строит из них запрос к Elasticsearch. Поиск «в лоб» ломается на синонимах: по «штанам» выдача пустая, потому что в каталоге этот вид товара называется «брюки».
В индексе products поле title анализируется ru_index: нижний регистр и русский стеммер. В settings уже есть анализатор ru_search_syn с фильтром синонимов, но в маппинг поля его не подключили, а переиндексировать каталог до вечера нельзя.
Нужен запрос, который по слову «штаны» вернёт и брюки, и товары, где написано «штаны». Порядок не важен.
В работе: Поиск по каталогу одежды: синонимы на стороне запроса.
Источник: блог Lamoda Tech на Хабре: как устроен поиск каталога. Условие пересказано своими словами.
Какой запрос найдёт по «штаны» и брюки, и штаны?
- match по title с analyzer: ru_search_syn в самом запросе
- match с fuzziness: AUTO
- Обычный match по title
- term по title