Sphinx Search представляет собой поисковую систему с открытым исходным кодом, предназначенную для выполнения полнотекстового поиска по большим массивам информации. Первоначально проект создавался как инструмент для разгрузки реляционных баз данных, прежде всего MySQL, от ресурсоёмких поисковых операций. Вместо выполнения сложных поисковых запросов непосредственно в СУБД данные индексируются и обрабатываются отдельным поисковым сервисом. Помимо баз данных, Sphinx Search способен работать с различными источниками информации, включая XML-документы, CSV-файлы и другие форматы. Также поддерживаются RT-индексы (Real-Time), позволяющие добавлять, изменять и удалять записи без запуска полной переиндексации.
Поисковый движок широко используется в веб-приложениях, системах управления контентом, интернет-магазинах и корпоративных информационных системах. Он подходит для организации поиска по статьям, журналам событий, сообщениям пользователей и другим текстовым данным.
Архитектура Sphinx Search содержит два основных исполняемых компонента: indexer и searchd. При этом, indexer не участвует в поиске напрямую, а только создаёт и обновляет поисковые индексы. Компонент searchd как раз и использует эти готовые индексы для обработки запросов.
indexer – консольная утилита, которая подключается к источникам данных, например, MySQL или MariaDB, считывает документы и формирует индексные файлы. Во время индексации текст разбивается на слова, и создаются структуры данных для быстрого поиска. При этом результаты сохраняются на диске. Обычно indexer запускается вручную или по расписанию через cron для обновления поисковой базы после изменения данных на сайте или в приложении.
searchd – фоновый сервис (демон), который загружает в память индексы, созданные при помощи indexer, и ожидает поисковые запросы от клиентских приложений. Когда пользователь выполняет поиск на сайте, приложение отправляет запрос демону searchd через SphinxAPI, SphinxQL или другой поддерживаемый интерфейс. Демон обрабатывает запрос, находит релевантные документы в индексах и возвращает результаты. Благодаря разделению процессов индексации и поиска пользователи могут выполнять поиск практически мгновенно, даже по большим объёмам данных, пока индексы периодически обновляются утилитой indexer.
Далее в статье разберём, как установить Sphinx Search на виртуальный выделенный сервер под управлением Rocky Linux 9.
Как установить Sphinx Search на Rocky Linux 9
В данном примере инсталляция Sphinx Search производится путём сборки из исходного кода с использованием версии 2.2.11. Версия 2.2.11 является последним официальным выпуском классического Sphinx перед разделением проекта и появлением его форков. Несмотря на отсутствие активной разработки, данная версия остаётся стабильным и проверенным решением. Оно продолжает использоваться во многих существующих проектах и совместимо с большим количеством документации и готовых конфигураций. Сборка из исходников позволяет установить Sphinx независимо от наличия пакетов в репозиториях Rocky Linux. Также это даёт возможность контролировать параметры компиляции и расположение файлов программы.
Подготовка системы
Перед сборкой установите компиляторы, инструменты сборки и заголовочные файлы необходимых библиотек:
$ sudo dnf install gcc gcc-c++ make cmake expat-devel openssl-devel
В данном случае в систему будут установлены:
gccиgcc-c++– компиляторы C и C++;makeиcmake– системы сборки;expat-devel– библиотека разбора XML;openssl-devel– заголовочные файлы OpenSSL.
Загрузка файлов Sphinx Search
Для хранения исходного кода программ, библиотек и компонентов, которые компилируются непосредственно на сервере, в Linux-системах традиционно используется каталог /usr/src. Размещение архивов и распакованных исходников в данном каталоге помогает поддерживать порядок в файловой системе. Также его использование позволяет отделить исходные файлы от установленных программ. Исходя из чего, для продолжения перейдите в каталог /usr/src:
$ cd /usr/src
Находясь в каталоге /usr/src, загрузите архив с дистрибутивом Sphinx Search версии 2.2.11 для Linux-систем:
$ sudo curl -LO https://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
Затем при помощи утилиты tar распакуйте загруженный архив:
$ sudo tar -xvf sphinx-2.2.11-release.tar.gz
После чего перейдите в полученный при разархивировании каталог:
$ cd sphinx-2.2.11-release
Подготовка СУБД
В нашем примере в качестве источника данных для индексации будет использоваться MariaDB. Поисковый движок должен подключаться к базе данных, выполнять SQL-запросы и получать необходимую информацию, на основе которой формируются поисковые индексы. Для обеспечения такого взаимодействия при сборке Sphinx Search используются клиентские библиотеки MariaDB, входящие в пакет mariadb-devel.
Таким образом, перед компиляцией Sphinx необходимо подготовить систему для работы с библиотеками MariaDB. Чтобы определить, какие ветки СУБД доступны для установки и какую из них следует использовать в дальнейшем, выполните команду:
$ dnf module list mariadb
Вывод команды показывает доступные ветки MariaDB:

Чтобы активировать поток MariaDB, например, версии 11.8, запустите команду:
$ sudo dnf module enable mariadb:11.8
После активации потока все связанные пакеты MariaDB будут устанавливаться из выбранной ветки. Это позволит избежать конфликтов между различными версиями, а также обеспечит совместимость устанавливаемых компонентов.
Затем установите пакет разработки MariaDB. Он содержит заголовочные файлы, клиентские библиотеки и другие компоненты, необходимые для компиляции программ, взаимодействующих с MariaDB:
$ sudo dnf install mariadb-devel
mariadb_config – служебная утилита, входящая в пакет mariadb-devel, которая предоставляет информацию о параметрах установленного клиента MariaDB. Чтобы убедиться в том, что утилита mariadb_config доступна в системе, выполните команду:
$ which mariadb_config
Вывод команды должен содержать расположение исполняемого файла утилиты.

Сборка Sphinx Search
Сборка Sphinx Search выполняется в три этапа:
- конфигурирование;
- компиляция;
- установка.
Конфигурирование выполняется следующей командой, где флаг --prefix задаёт директорию установки:
$ ./configure --prefix=/usr/local/sphinx
Для запуска компиляции, которая может занять продолжительное время, выполните команду:
$ make
По окончании компиляции запустите установку:
$ sudo make install
После успешной установки файлы будут размещены в каталогах:
/usr/local/sphinx/bin/– исполняемые файлы (searchd,indexer,spelldumpи др.);/usr/local/sphinx/etc/– конфигурационные файлы;/usr/local/sphinx/var/– данные и логи.
Чтобы команды indexer и searchd были доступны без указания полного пути, добавьте директорию с исполняемыми файлами Sphinx в переменную окружения PATH:
$ echo 'export PATH=$PATH:/usr/local/sphinx/bin' >> ~/.bashrc
Для применения новых переменных окружения без перезапуска терминала выполните команду:
$ source ~/.bashrc
Чтобы убедиться в корректной работе бинарных файлов, выведите, например, справку по параметрам searchd:
$ searchd -h
Наличие вывода означает, что бинарный файл корректно скомпилирован и работает.

