Установка поиска Sphinx на Ubuntu 22.04 для 1С-Битрикс

Просмотров: 1660

Задача: установить и сконфигурировать поиск Sphinx под управлением Ubuntu 22.04 и панели управления HestiaCP для использования с 1С-Битрикс

Sphinx — это система для быстрого и эффективного полнотекстового поиска в больших объемах текстовых данных. Она позволяет сделать поиск на сайте быстрым и качественным, а также снизить нагрузку на сервер. Sphinx доступен в продуктах "1С-Битрикс" и полностью интегрирован с компонентами модуля "Поиск"

Предварительно установите HestiaCP на ваш сервер Ubuntu 22.04 и оптимизируйте его для работы с 1С-Битрикс, включая кеширование в оперативной памяти с Redis. Инструкцию по установке HestiaCP с Redis можно найти в видео по ссылке, под названием "1С-Битрикс с кешированием в Redis".

Установка Sphinx на Ubuntu 22

Подключитесь к серверу по SSH и выполните следующую команду для установки Sphinx из репозиториев Ubuntu:

sudo apt install sphinxsearch

Вам может потребоваться ввести пароль, что бы выполнить команду с правами суперпользователя.

Создайте файл конфигурации для Sphinx по пути /etc/sphinxsearch/sphinx.conf и добавьте в него рекомендуемые параметры для 1С-Битрикс:

searchd
{
    listen              = 9312
    listen              = 9306:mysql41
    log                 = /var/log/sphinxsearch/searchd.log
    query_log           = /var/log/sphinxsearch/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file            = /var/run/sphinxsearch/searchd.pid
    seamless_rotate     = 1
    preopen_indexes     = 1
    unlink_old          = 1
    workers             = threads
    binlog_path         = /var/lib/sphinxsearch/data/
    binlog_max_log_size = 512M
    binlog_flush        = 2
    rt_flush_period     = 3600
}
indexer
{
    lemmatizer_cache    = 128M
}
common
{
    lemmatizer_base     = /etc/sphinxsearch/dicts/
}
index tecam
{
    type                = rt
    path                = /var/lib/sphinxsearch/data/bitrix
    docinfo             = inline
    morphology          = stem_enru, soundex
    dict                = keywords
    prefix_fields       = title
    infix_fields=
    min_prefix_len      = 2
    rt_field            = title
    rt_field            = body
    rt_attr_uint        = module_id
    rt_attr_string      = module
    rt_attr_uint        = item_id
    rt_attr_string      = item
    rt_attr_uint        = param1_id
    rt_attr_string      = param1
    rt_attr_uint        = param2_id
    rt_attr_string      = param2
    rt_attr_timestamp   = date_change
    rt_attr_timestamp   = date_to
    rt_attr_timestamp   = date_from
    rt_attr_uint        = custom_rank
    rt_attr_multi       = tags
    rt_attr_multi       = right
    rt_attr_multi       = site
    rt_attr_multi       = param
}

Обратите внимание на ID создаваемого индекса (в данном случае указано index tecam { ... }). Если планируете использовать Sphinx на нескольких сайтах, рекомендуется создавать уникальный индекс для каждого. Однако вы также можете использовать общий индекс в зависимости от требований и структуры ваших сайтов.

Конкретно на HestiaCP, не рекомендую задавать длинну индетификатора более 6-ти символов - могут возникнуть проблемы

Затем запустите Sphinx в качестве службы:

sudo service sphinxsearch start

И выполните индексацию:

sudo indexer --all

Чтобы Sphinx запускался при старте системы, добавьте следующую строку в конец файла /etc/default/sphinxsearch (если строка уже существует, перепишите ее):

START=yes

Настройка поиска Sphinx на стороне 1С-Битрикс

  • Перейдите в админ-панель 1С-Битрикс.
  • Откройте настройки модуля "Поиск" по пути: Настройки > Настройки продукта > Настройки модулей > Поиск.
  • На вкладке "Морфология" выберите "Sphinx" в настройке "Полнотекстовый поиск с помощью".
  • Укажите ID индекса, как он указан в конфигурационном файле Sphinx (в моем случае "tecam").
  • Сохраните изменения.
Sphinx на 1С-Битрикс

Перезапустите сервис службы sphinx и переиндексируйте:

sudo service sphinxsearch restart
sudo indexer --all

Обновите страницу настроек морфологии и 1С-Битрикс предложит выполнить полную переиндексацию модуля поиска — выполните эту операцию. Настройка Sphinx в качестве поискового механизма на Ubuntu 22.04 с использованием HestiaCP завершена.

Видеоиструкция: поиск Sphinx на Ubuntu 22.04

Это запись прямой трансляции, в которой рассказал как установить и настроить поиск Sphinx на Ubuntu 22.04

Гость 11.10.2024
Добрый день!

UBUNTU 22 + fustpanel. Следуя данной инструкции, после ввода команды:
sudo indexer –all
В консоле получаю ошибку:
Код
FATAL: no indexes found in config file '/etc/sphinxsearch/sphinx.conf'

При попытке сохранить настройки в битрикс – ошибка:
Ошибка подключения к серверу Sphinx: Ошибка подключения (Connection refused).
В /bitrix/php_interface/dbconn.php подключение к базе данных указано.
Чем может быть вызвана ошибка?
Михаил Базаров 11.10.2024
Давненько с  fastpanel не пересекался, но судя по ошибке
в битриксе в dbconn.php укажите данные для подключения к БД. Оно там пытается искать

Блог-note: заметки разработчика

Запретить указание количества товаров, добавляемого в корзину, в определенных разделах каталога.

Задача состоит в том, чтобы запретить указание количества товара, добавляемого в корзину, в определенных разделах катало...

Массово: применить наценку ко всем товарам каталога с пересчетом от базовой.

Рассмотрим как, в магазине работающем на 1С-битрикс, массово применить наценку на все товары каталога. Устанавливать буд...

Индивидуальные цены в 1С-Битрикс: в каталоге и при оформлении заказа

В этой заметке постараюсь описать процесс реализации индивидуальных цен, для пользователей. При этом, индивидуальные цен...

Рассылка новинок каталога в автоматическом режиме

Что бы реализовать рассылку новинок каталога на email-ы пользователей, можно воспользоваться событием OnBeforeIBlockElem...

Следующая/предыдущая новость/статья при просмотре подробной в Битрикс

Странное дело, в Битрикс по умолчанию, отсутсвует функционал для навигации внутри новостей или статей типа: "Следующая/...

Заполнить картинки разделов каталога из картинок товаров

Задача: в каталоге, разделы и подразделы выводятся в виде плитки над товарами, с картинками разделов. Так как разделов и...

Удалить половину элементов инфоблока с помощью API

Задача: вот такая странная задача, нужно удалить из инфоблока половину элементов. Не важно каких, просто половину элемен...

Определить местоположение пользователя и показать магазины поблизости.

Задача: в мобильном приложении, которое открывает сайт на 1С-Битрикс внутри себя, нужно определить местоположение пользо...

Фотогалерея на базе компонента новостей, с fancybox.

Это заметка обновление к очень старой, уже имеющейся на сайте. Сделаем что-то типа фотогалереи на базе встроеннного в би...