Умный поиск для 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
Вопросы по модулю задавайте здесь — отвечаем в теме.



