Молниеносный поиск
Поиск прощает опечатки и остаётся быстрым на каталоге в сотни тысяч товаров.
Снимки экрана скоро появятся.
Покупатель пишет «кросовки» с одной «с» — и уходит с пустой выдачи, хотя товар у вас есть. Плагин подключает магазин к отдельной поисковой службе: она прощает опечатки, отвечает за миллисекунды и не замедляется, когда каталог вырастает до сотен тысяч позиций.
Что делает
- Прощает опечатки в запросе: «кросовки» находят кроссовки, «наушнеки» — наушники. Прощать или нет — ваш выбор в настройках.
- Держит скорость на большом каталоге: подсказка успевает появиться, пока покупатель печатает.
- Ищет сразу по товарам, разделам и брендам и сам считает, сколько найденного лежит в каждом разделе — эти числа покупатель видит в подсказке.
- Требует, чтобы совпали все слова запроса: по «чехол для айфона» не приезжает весь каталог чехлов.
- Забирает ваши синонимы из раздела «Поиск» — задавать их второй раз не нужно.
- Загружает каталог в службу фоном, магазин при этом продолжает работать.
- Если служба не отвечает, магазин молча ищет как раньше, встроенным поиском: покупатель не увидит пустую выдачу.
Что нужно для работы
- Сервер, где можно запустить дополнительную службу (обычный VPS подойдёт, шаред-хостинг — нет). Как её поднять, написано во вкладке «Как пользоваться»: одна команда.
- Выбрать этот способ поиска в «Настройки» → «Поиск» и один раз загрузить туда каталог.
- Работающее расписание задач на сервере — им идёт фоновая загрузка каталога.
Молниеносный поиск — как поднять поисковый сервис
Плагин подключает магазин к Meilisearch — небольшой поисковой службе, которая живёт на вашем же сервере. Она занимает несколько сотен мегабайт памяти, запускается одной командой и не требует обслуживания.
Пока служба не настроена, магазин ищет как раньше — встроенным поиском. Ничего не сломается, если вы отложите настройку.
Что понадобится
- Сервер с root-доступом (обычный VPS — этого достаточно).
- 1 ГБ свободной памяти и место под индекс: примерно как треть от объёма каталога в базе.
- 10 минут.
Шаг 1. Придумайте ключ доступа
Служба отвечает только тому, кто знает ключ. Сгенерируйте длинную строку:
openssl rand -hex 32
Сохраните её — этот же ключ вы впишете в настройках плагина.
Шаг 2. Запустите службу
Вариант А. Docker (проще всего)
docker run -d --restart unless-stopped \
--name meilisearch \
-p 127.0.0.1:7700:7700 \
-e MEILI_MASTER_KEY='ВАШ_КЛЮЧ' \
-e MEILI_ENV=production \
-v /var/lib/meilisearch:/meili_data \
getmeili/meilisearch:v1.11
Вариант Б. Без Docker (systemd)
curl -L https://install.meilisearch.com | sh
sudo mv ./meilisearch /usr/local/bin/
sudo useradd -d /var/lib/meilisearch -s /bin/false -m meilisearch
sudo tee /etc/systemd/system/meilisearch.service >/dev/null <<'UNIT'
[Unit]
Description=Meilisearch
After=network.target
[Service]
User=meilisearch
Group=meilisearch
ExecStart=/usr/local/bin/meilisearch \
--db-path /var/lib/meilisearch/data \
--http-addr 127.0.0.1:7700 \
--env production \
--master-key ВАШ_КЛЮЧ
Restart=always
[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable --now meilisearch
Важно: адрес 127.0.0.1 означает, что служба доступна только самому
серверу. Наружу её открывать не нужно — иначе ваш каталог сможет скачать кто
угодно.
Проверьте, что служба поднялась:
curl -H "Authorization: Bearer ВАШ_КЛЮЧ" http://127.0.0.1:7700/health
# {"status":"available"}
Шаг 3. Включите плагин в магазине
- «Настройки» → «Плагины» → «Молниеносный поиск»: впишите адрес
(
http://127.0.0.1:7700) и ключ доступа. - «Настройки» → «Поиск» → способ поиска: выберите «Молниеносный поиск».
- Там же нажмите «Пересобрать» — каталог уедет в поисковую службу. На большом каталоге это несколько минут, магазин продолжает работать.
Дальше индекс поддерживается сам: сохранили товар — он обновился в поиске.
Если что-то пошло не так
- Магазин ищет по-старому. Значит, служба не ответила. Магазин в такой
ситуации молча возвращается на встроенный поиск, чтобы покупатель не увидел
пустую выдачу. Проверьте
curl … /healthи запись в журнале магазина. - «Ничего не найдено» на весь каталог. Каталог ещё не загружен в службу: нажмите «Пересобрать» в разделе «Поиск».
- Служба съедает много памяти. Это нормально при загрузке каталога; после неё расход падает. Если памяти мало, загружайте каталог ночью.
Обновление и резервные копии
Индекс полностью восстанавливается из базы магазина командой пересборки, поэтому отдельная резервная копия службы не нужна. При обновлении Meilisearch между мажорными версиями достаточно пересобрать поиск заново.