Установка и настройка sphinx на centOS 7

Sphinx — это полнотекстовый поисковый движок, известный своей высокой эффективностью при поиске в больших объемах данных. Данные же в индекс могут поступать из разнообразных источников: базы данные, текстовые файлы, почтовые ящики и много других.

В этом посте разберем как поставить sphinx на centOS 7

Шаг 1. Установка sphinx’а
Перед установкой Sphinx, необходимо установить его зависимости:

Далее скачиваем последнюю версию (на момент написания — 2.2.11)

И установалнием скаченные rpm используя yum

Теперь у нас есть успешно установленный Sphinx. Приступим к его настройке.

Шаг 2. Создание тестовой базы

Здесь мы установим базу данных использую  sql файл с тестовыми данными, поставляемый с пакетом. Это позволить нам проверить корректную работу Sphinx.

укажите пароль пользователя и входите в консоль mysql

Создадим тестовую бд

Импортируем данные в неё

И выйдем из консоли

Теперь у нас есть база данных заполненная случайными данными.

Шаг 3. Настройка  Sphinx

Файл конфига Sphinx — /etc/sphinx/sphinx.conf. Он состоит из 3 основных блоков: index, searchd, source.

Теперь давайте создадим новый конфигурационный файл

И начнем описывать конфигурацию с блока source в котором будет описан источник данных (именно та база которую мы создали ранее)

Опишем все директивы:

type — тип источника, в нашем случае — mysql (может быть pgsql, mssql, xmlpipe2, odbc и много других)

sql_host — это хост для подключения к бд

sql_user — пользователь бд

sql_pass — пароль к бд

sql_db — имя бд

sql_query — запрос, результат которого будет отправлен в индекс Sphinx

Блок index нашего конфига:

source — то имя источника данных (указывали выше)

path — Путь, до файлов индекса (обычно, /var/lib/sphinxsearch/index)

И опишем последний блок конфига searchd

listen — указываем порт и протокол которые будет слушать Sphinx  и принимать входящие запросы

query_log — лог запросов к  Sphinx

preopen_indexes — принудительное «предооткрытие» всех индексов при старте

unlink_old — удаление старых индексов при ротации

Полный файл конфигурации будет выглядеть следующим образом:

Шаг4. Индексы

У нас есть бд с тестовым набором данных, сконфигурированных shpinx. Теперь нам необходимо, перенести данные из бд в индекс Sphinx. Для этого воспользуемся утилитой indexer

ключ config — указывает расположение файла с конфигурацией, а ключ —all указывает на то, что бы мы заполнили все индексы, а раз у нас пока толко один, то мы можем четко указать какой индекс заполнить

Должны получить что-то похожее на это:

 

Шаг 5. Старт Sphinx

Теперь, когда мы создали индекс для нашего  sphinx’а мы запустить его

Проверим статус

Если все отлично, то увидим что-то в духе:

Шаг 6. Тестируем

Для тестирования воспользуемся SphinxQL — язык запросов к  Sphinx, использующий интерфейс MySql.

Коннектимся к sphinx

Найдем фразу:

Ответ будет следующим:

В результате было найдено две строки для индекса test1.

Как мы видим все отлично работает. Подобным образом можно начинать работать с реальными данными

 


Есть что написать?