Войти Регистрация
Data base

258. По запросу «штаны» пусто, хотя брюк сотни

Средняя

Elasticsearch · Elasticsearch 8.19.12

Lamoda разбирает поисковый запрос на сущности — категорию, бренд, цвет — и строит из них запрос к Elasticsearch. Поиск «в лоб» ломается на синонимах: по «штанам» выдача пустая, потому что в каталоге этот вид товара называется «брюки».

В индексе products поле title анализируется ru_index: нижний регистр и русский стеммер. В settings уже есть анализатор ru_search_syn с фильтром синонимов, но в маппинг поля его не подключили, а переиндексировать каталог до вечера нельзя.

Нужен запрос, который по слову «штаны» вернёт и брюки, и товары, где написано «штаны». Порядок не важен.

В работе: Поиск по каталогу одежды: синонимы на стороне запроса.

Как проверяем Движка Elasticsearch в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
анализаторыsynonym_graphsearch_analyzerfuzziness

Источник: блог Lamoda Tech на Хабре: как устроен поиск каталога. Условие пересказано своими словами.

Какой запрос найдёт по «штаны» и брюки, и штаны?

  • match по title с analyzer: ru_search_syn в самом запросе
  • match с fuzziness: AUTO
  • Обычный match по title
  • term по title