Как стать автором
Обновить

Как сделать поиск в интернет-магазине

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 2.6K
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 8

Комментарии 8

Пример с молоком показательный, что все врут (c) В описании 950г, а цена 99.90 за кг, а итоговая не пересчиталась. Но покупатель же не заметит...

Вообще там цена стоит "р/шт", а не "р/кг". Но да, странно, что в корзине выводится килограмм. Посмотрим, спасибо за внимательность!

А вот и ответ коллег подоспел. В корзине пишут вес брутто, чтобы клиент понимал общий вес доставки. Это особенно хорошо заметно, если что-нибудь в стекле положить в корзину, там раза в два может вес расходиться с весом продукта.
С молоком просто неудачный пример, потому что уменьшение упаковки всех уже достало :)

В чем минусы распила монолита вы рассказали, а в чем плюсы?

Для системы поиска плюсов как таковых нет. Сущности отдельно обновлять мы умели уже с монолитом, а полный пролив данных гораздо удобнее делать из одного источника.

Что это дает проекту в целом и компании - совсем другая история и она сильно выходит за рамки этой темы. Там есть и плюсы и минусы и тех и других достаточно много.
У меня кстати есть на эту тему немного холиварный доклад с одной региональной конференции

Про Manticore упомянули и по факту в ней устранены все минусы, о которых вы написали и к тому же она не такая прожарливая как Elastic, но не написали, почему ее не пробовали, хотя цена такой пробы минимальна, т.к. запросы практически были би идентичны.

На текущий момент в Эластике уже есть новый функционал Enterprise Search, он правда плохо документирован, некоторые вещи пришлось подсмотреть у Кибаны.

Как минимум позволяет:

  • Выполнять для автозаполнения

  • Выполнять поиск без указания уже каких-то своих конструкций

  • Настраивать точность поиска в самом интерфейсе

  • Добавляет поиск по синонимам

Синонимы это как раз то чего не хватало.

Вот только остается проблема - как автоматизировать процесс наполнения базы синонимов по товарам?

Например тот-же iPhone может же написано по разному:

  • iPhone

  • Айфон

В первом случае найдет просто Эластик, во втором - нет. Но если добавить синоним, найдет в обоих.

Конкретно пример с iPhone-Айфон решается через использование фонетического анализатора. Это тоже не панацея, он тоже ошибается, но с простыми кейсами позволяет справиться без ручного прописывания синонимов.

Что до синонимов, они есть в базовой коробке, можно подложить на VM с эластиком файл со списком синонимов и сослаться на него в настройках. Вот тут описано https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html#_solr_synonyms

Также синонимы можно сделать костыльно (этот пусть тоже проходили), закидывая в документы в какое-нибудь поле а-ля synonyms список того, по чему он тоже должен находиться. Это довольно плохой путь, потому что если их много, обилие ключевых слов ломает TF/IDF алгоритмы. У нас в какой-то момент с этим произошла проблема, когда контент-редакторы стали заниматься "SEO-оптимизацией" поиска через наваливание синонимов товарам, которые хотели поднять повыше. Пришлось бить по рукам

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.