Cart-Power Модуль: Умный поиск

Умный поиск для CS-Cart и Multi-Vendor

Покупатель, который дошёл до поиска, готов купить. Если поиск ничего не нашёл — он уходит, чаще всего к конкуренту.

Штатный поиск CS-Cart сравнивает запрос с началом строки в базе. Он не прощает опечаток, не знает синонимов, не понимает, что «самсунг» — это Samsung, и заметно замедляется, когда товаров становится много.

Мы выпустили модуль, который отдаёт поиск Elasticsearch и добавляет к нему всё, чего штатному не хватает.

Не только поиск: каталог, блоки и фильтры

В CS-Cart любой список товаров собирает одна функция ядра, и на большом каталоге она превращается в тяжёлый запрос к базе. Модуль перехватывает её целиком, поэтому из индекса работают не только результаты поиска, но и списки товаров в категориях, товарные блоки и блоки фильтров. Что именно отдать Elasticsearch, отмечается галочками в настройках.

Замеры на действующем маркетплейсе: каталог 779 000 товаров, 848 000 карточек в индексе. Одна и та же страница открывалась в двух режимах — обычном и с ключом skip_elastic=Y, который отключает Elasticsearch на один запрос. Адреса уникальные, кэш исключён в обоих случаях; 18 парных замеров, в таблице медианы.

Что открывает покупатель На MySQL На Elasticsearch Выигрыш
Страница категории 8,3 с 1,5 с в 5,7 раза
Та же категория, 200-я страница 8,0 с 1,4 с в 5,6 раза
Фильтр по характеристике 7,9 с 1,5 с в 5,4 раза
Главная с товарными блоками 7,3 с 0,9 с в 8,5 раза
Поиск по слову 18,1 с 1,1 с в 17 раз

Глубина каталога перестаёт стоить времени: третья, шестидесятая и двухсотая страницы категории на Elasticsearch открываются одинаково — 1,47, 1,54 и 1,42 секунды, тогда как на MySQL каждая стоит около восьми секунд.

Запись при этом остаётся за MySQL: импорт, обмен с 1С и пересчёт цен пишут в базу, а покупатель читает из индекса — ночная загрузка прайса больше не тормозит витрину.

Что теперь находится

Покупатель набирает Штатный поиск Умный поиск
cfvceyu — «samsung» в русской раскладке ничего товары Samsung
тошиба, иксбокс ничего Toshiba, X-Box 360
телевизр с опечаткой ничего телевизоры
телек ничего телевизоры, по словарю синонимов
кроссовки 43 размер размер лежит в характеристике и не ищется кроссовки нужного размера
слово в середине названия не находит находит


Неверная раскладка: cfvceyu — это «samsung», набранное по-русски. Найден 21 товар.


Кириллица вместо латиницы: «тошиба» находит Toshiba, автодополнение подсказывает точное название.

Что получает владелец магазина

Аналитику запросов. Что искали, сколько раз и что нашли. Отдельно — запросы с пустой выдачей: это прямой список того, чего не хватает в каталоге или что названо не так, как ищут покупатели.


Запросы с нулём в колонке «Найдено» — готовый список задач по каталогу.

Управление релевантностью. Вес и допуск опечаток настраиваются по каждому полю отдельно: название, артикул, краткое и полное описание, мета-теги, характеристики.


Название обычно 100, описание 10–20, артикул — точное совпадение без допуска опечаток.

Словари под свою нишу. Синонимы, стоп-слова и подготовленные подсказки, с импортом и экспортом. Морфологию по языкам — для каждого языка витрины свой алгоритм словоформ. Разгрузку базы — товарная выдача, товарные блоки и поиск уходят в Elasticsearch.

Чего модуль не делает

  • Не устанавливает Elasticsearch. Модуль к нему подключается, сам сервер нужен свой.
  • Не работает без планировщика. Индекс поддерживают задания cron; без них новые товары в выдачу не попадут.
  • Не заменяет вёрстку магазина. Слой поиска рассчитан на UniTheme2, на других темах работает, но подгонку под дизайн лучше заложить в проект.
  • Не работает вместе с «Живым поиском» Cart-Power — при включении «Умного поиска» тот отключается автоматически.

Совместимость

CS-Cart и Multi-Vendor 4.17.1 – 4.21.1, все четыре редакции. PHP 7.4 – 8.3. Elasticsearch 8.x. Нужен модуль «Cart-Power: Менеджер модулей».

Посмотреть и почитать

Демо-магазин: Демо-стенд Cart-Power — магазин на CS-Cart — наберите в поиске cfvceyu, тошиба или телевизр и посмотрите, что получится.

Документация: Cart-Power addon's docs

Карточка модуля: Умный поиск и каталог на Elasticsearch для CS-Cart — Cart-Power

Вопросы по модулю задавайте здесь — отвечаем в теме.

О! Приблизьтесь пожалуйста по функционалу и визуалу к https://home.mv.unitheme.net/ и сделайте чтобы адаптировалось под unitheme