Поиск Sphinx

Использование Sphinx в качестве поискового механизма позволит значительно увеличить скорость поиска и снизит нагрузку на сервер.

Установка

Подключитесь у серверу по протоколу ssh Подключение по SSH

  • В стартовом меню BitrixVM выберете пункт 7. Manage sphinx in the pool. (Если пул не создан, то создайте его)

  • Далее выберите 1. Create sphinx instance on the server

  • Далее введите хостнейм и имя базы данных

  • Согласитесь с переиндексацией сайта

  • Поле завершения установки, модуль поиска автоматически будет переключен на sphinx

  • В дальнейшем при изменении ассортимента товаров необходимо выполнять переиндексацию.

Словоформы и синонимы

  • Добавьте в файл настроек /etc/sphinx/bx/search_index/default.conf между фигурными скобками путь к файлу с словоформам:
wordforms = /etc/sphinx/wordforms.txt
  • Далее необходимо создать текстовый файл /etc/sphinx/wordforms.txt с содержимым вида "что на что менять", например:
ролики для касс > чековая лента
сиф > cif
обеззораживатель > антисептик
  • При каждом изменении списка словоформ необходимо очистить кеш и выполнить полную переиндексацию:
systemctl stop searchd
find /var/lib/sphinx/ -type f -exec rm -f {} \;
systemctl start searchd

Дополнительные настройки

Все дополнительные настройки добавляются отдельной строкой в файл настроек /etc/sphinx/bx/search_index/default.conf между фигурными скобками.

  • Приводим латиницу и кириллицу в нижний регистр, Ё заменяем на е (здесь и далее под значениями вида U+410 подразумевается номер символа в таблице Юникода):
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+0435, U+451->U+0435
  • Индексация нецелых чисел вместе и раздельно. Например, 1.25 будет индексирован как '1.25', '1' и '25':
blend_chars = +, &, U+2C, U+2E
  • Приведение разделителя десятичных знаков в числах к точке. Например 1,75 или 1.75 будут как 1.75:
regexp_filter = (\d+)\,(\d+) => \1.\2
  • Транслитерация средствами Sphinx возможна только буква в букву. Например, Ж нельзя заменить на ZH.