Enver Dzheparov

Сверхбыстрый поиск

Поиск по каталогу на Elasticsearch

$60 · разработка · IP5 Agency

Модуль доступен на 2 языках: русском, английском.

Стандартный поиск CS-Cart плохо справляется с опечатками, большими каталогами и сложными запросами. Модуль заменяет его на быстрый полнотекстовый поиск на базе Elasticsearch: устойчивость к опечаткам, синонимы, стоп-слова, мгновенные подсказки и подробная статистика запросов. При недоступности Elasticsearch поиск автоматически переключается на стандартный MySQL-поиск CS-Cart — покупатель ничего не замечает.

Как работает модуль

В основе модуля — четыре сущности:

1. Установка и первичная настройка

1. Скопируйте содержимое пакета в корень CS-Cart (сохраняя структуру app/, design/, js/, var/).

2. Установите зависимости:

cd app/addons/ip5_elastic_searchcomposer install --no-dev --optimize-autoloader

3. В админке: Дополнения → Управление дополнениями → найдите «IP5 Agency — Elastic Search» → Установить.

Если ранее была установлена более ранняя версия модуля — сначала удалите её (Деинсталлировать), затем установите заново: права доступа к новым разделам меню записываются в базу только при установке.

После установки модуль появляется в меню Website:

Рис. 1 — Вкладка General модуля: пункты меню и краткое описание.

2. Настройки подключения (Connection)

Откройте Дополнения → Управление дополнениями → IP5 Agency — Elastic Search → Settings → Connection.

Таблица ниже перечисляет все настройки секции Connection.

НастройкаЧто делает
EnabledОбщий выключатель: использовать Elasticsearch для поиска.
Elastic hostАдрес сервера Elasticsearch (по умолчанию 127.0.0.1).
Elastic portПорт (по умолчанию 9200).
Connection schemeСхема подключения: http или https.
Elastic login / passwordУчётные данные для доступа к Elasticsearch.
Elastic nodes namesИмена узлов кластера.
Prefix for indicesПрефикс для имён индексов (необязательно).
Elastic shards countКоличество шардов (по умолчанию 3).
Elastic replicas countКоличество реплик (по умолчанию 1).
Connect timeout, secТаймаут подключения в секундах.
Request timeout, secТаймаут запроса в секундах.

Рис. 2 — Настройки подключения к Elasticsearch (основные параметры).

Рис. 3 — Продолжение настроек подключения: шарды, реплики и таймауты.

После заполнения параметров рекомендуется проверить соединение. Успешное подключение отображается зелёным уведомлением на странице индексации.

3. Настройки поведения поиска (Search behavior)

Во вкладке Settings → Search behavior настраивается логика поиска.

НастройкаЧто делает
Fuzziness (typo tolerance)Устойчивость к опечаткам: 0 (только точное совпадение), 1, 2 или AUTO (рекомендуется).
Minimum should matchМинимальная доля совпадающих слов запроса (например, 75%).
Suggest results limitКоличество подсказок автодополнения (по умолчанию 8).
Indexation batch sizeРазмер пакета при индексации (по умолчанию 200).
Redirect to product page if only one result foundПри единственном результате сразу переходить на карточку товара.

Рис. 4 — (при наличии скриншота) Вкладка Search behavior с параметрами fuzziness, minimum should match и лимитами.

4. Индексация

Перейдите в Website → Indexation.

На странице отображается:

Рис. 5 — Страница индексации после успешного завершения. Статус Completed, все товары проиндексированы, видна история запусков.

Нажмите Run full reindexation, чтобы запустить полную переиндексацию каталога. Операция идемпотентна: создаётся новый build-индекс, после чего алиас переключается на него.

Важно: изменения в синонимах и стоп-словах применяются только после следующей полной переиндексации.

5. Синонимы и стоп-слова

Перейдите в Website → Synonyms and stop words.

Рис. 6 — Управление синонимами и стоп-словами. Синонимы указываются через запятую.

Синонимы позволяют находить товары по альтернативным написаниям (например, «камод» → «комод»). Стоп-слова исключаются из поискового индекса. После любых изменений необходимо запустить полную переиндексацию.

6. История поисковых запросов

Перейдите в Website → Search query history.

Рис. 7 — История поисковых запросов: все запросы, пустые поиски и топ-запросы. Доступен фильтр по датам и очистка истории.

Доступны три вкладки:

7. Поиск на витрине

На витрине модуль обеспечивает быстрые подсказки при вводе и устойчивость к опечаткам.

Рис. 8 — Автодополнение при корректном запросе «комод»: подсказки с названиями товаров и ценами.

Рис. 9 — Поиск с опечаткой «камоды»: модуль всё равно находит релевантные товары благодаря fuzziness и/или синонимам.

8. Отказоустойчивость

При недоступности Elasticsearch (таймаут, неверные настройки, сервер недоступен) поиск автоматически переключается на стандартный MySQL-поиск CS-Cart. Ошибка логируется в журнал событий CS-Cart и видна только администратору. На витрине покупатель не видит никаких сообщений об ошибке.

Требования