Как правильно настроить elasticsearch под неточный поиск?

Есть названия товаров к примеру
-Exo Wave i007plus
-Archos 70 Copper
-Exo Wave i007a
-Cavion Base 7.1 Quad
-Exo Wave versioni007b
Нужно сделать неточный поиск по ним по такому принципу :
- при вводе i007a в результатах был и Exo Wave i007a,Exo Wave i007plus и Exo Wave versioni007b .
по неточном поиске в документации нашел разве что fuzzy search по алгоритму левенштейна , но это по моему не то, что нужно . Потому что там максимальное расстояние может быть 2 символа, а у меня большинство случаев не будут попадать под это ограничение(хотя бы i007a (Exo Wave versioni007b))
Нужно что то типа LIKE %word% но с возможностью ошибки в слове , но как это реализовать никак не могу найти .
Что можете посоветовать по эту задачу?Куда копать дальше?
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Fuzzy здесь не поможет, нужно разбивать слова с цифрами на отдельные термы -
i007a -> i 007 a
versioni007plus -> versioni 007 plus
И т.д.
Это можно сделать через regexp character filter регулярным выражением, и складывать в отдельное дополнительное поле. Поиск делать по нескольким полям сразу.
Также можно попробовать char group tokenizer или pattern tokenizer с регуляркой, которая бьет текст и цифры отдельно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы