Установка і настройка sphinx в centos 7

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Sphinx - це продуктивна і проста система для повнотекстового пошуку з відкритим вихідним кодом. Sphinx може шукати дані в будь-яких джерелах: в базах SQL, текстових і HTML-файлах, поштових скриньках, і т.д.

Основні функції Sphinx:

  • Високопродуктивна індексація і пошук;
  • Просунуті інструменти індексації та запитів;
  • Просунута постобработка;
  • Масштабованість до мільярдів документів, терабайтов даних і тисяч запитів в секунду;
  • Проста інтеграція з джерелами даних SQL і XML і пошуковими інтерфейсами SphinxQL, SphinxAPI або SphinxSE;
  • Розподілений пошук.

Даний посібник допоможе встановити Sphinx і налаштувати пошукову систему для взаємодії з MySQL.

вимоги

  • Налаштований сервер CentOS 7.
  • Ні-root користувач з доступом до sudo (про створення такого користувача можна прочитати в керівництві по початкового налаштовування).
  • За умовчанням встановлено сервер MySQL (інструкції по установці можна знайти у відповідному розділі цього підручника).

1: Установка Sphinx

На момент написання статті найсвіжіший стабільний випуск Sphinx є 2.2.11.

Примітка. Відстежувати версії можна тут.

Перш ніж встановити Sphinx на сервер, потрібно встановити залежно програми:

sudo yum install -y postgresql-libs unixODBC

Перейдіть в каталог tmp, щоб завантажити файли Sphinx.

Завантажте останню версію Sphinx:

sudo yum install -y sphinx-2.2.11-1.rhel7.x86_64.rpm

Пошукова система Sphinx успішно встановлена ​​на сервер. Після установки Sphinx потребує додаткового налаштування.

2: Створення тестової бази даних

Створіть базу даних за допомогою зразка файлу SQL, який поставляється разом з пакетом. Для цього потрібно імпортувати цей SQL-файл в базу даних.

Увійдіть в оболонку MySQL:

Введіть root-пароль MySQL, після чого командний рядок зміниться:

Створіть БД (в даному керівництві вона називається test):

CREATE DATABASE test;

Потім закрийте оболонку MySQL:

Тепер БД test заповнена даними з імпортованого файлу.

3: Налаштування Sphinx

Конфігурації Sphinx повинні зберігатися в файлі sphinx.conf в каталозі / etc / sphinxsearch. Вони складаються з трьох основних блоків: index, searchd і source.

У файлі за замовчуванням передбачена мінімальна конфігурація. Але краще створити новий конфігураційний файл.

Перемістіть конфігураційний файл за умовчанням, sphinx.conf:

sudo mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf2

sudo vi /etc/sphinx/sphinx.conf

Примітка. Після опису кожного блоку налаштувань можна знайти повний код для sphinx.conf.

Блок source містить тип джерела даних, ім'я користувача і пароль MySQL. Перший стовпець sql_query повинен містити унікальний ID. Запит SQL буде виконуватися для кожного індексу, а потім передавати дані в індексний файл Sphinx. Блок source складається з таких полів:

Блок source виглядає так:

source src1
type = mysql
#SQL settings (for 'mysql' and 'pgsql' types)
sql_host = localhost
sql_user = root
sql_pass = password
sql_db = test
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP (date_added) AS date_added, title, content \
FROM documents
sql_attr_uint = group_id
sql_attr_timestamp = date_added
>

Блок index містить дані про джерело і шлях до місцезнаходження даних.

  • source: ім'я блоку source. В даному випадку це src1.
  • path: шлях до індексного файлу.

Цей блок виглядає так:

index test1
source = src1
path = / var / lib / sphinx / test1
docinfo = extern
>

Блок searchd містить порти і змінні для запуску демона Sphinx.

  • listen: порт, на якому потрібно запустити Sphinx, і який використовується протокол (в керівництві - 9306: mysql41). Популярні протоколи Sphinx - sphinx (SphinxAPI) і: mysql41 (SphinxQL).
  • query_log: шлях до балці запитів.
  • pid_file: шлях до PID-файлу Sphinx.
  • seamless_rotate: запобігає останов searchd при кешуванні великого обсягу даних.
  • preopen_indexes: вказує, чи потрібно попередньо відкривати все індекси.
  • unlink_old: вказує, чи потрібно відключити старі копії індекс-файлів.

searchd
listen = 9312: sphinx #SphinxAPI port
listen = 9306: mysql41 #SphinxQL port
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
binlog_path = / var / lib / sphinx /
>

Нижче наведені всі конфігурації файлу sphinx.conf. Ви можете просто скопіювати і вставити їх в свій файл. Єдина змінна, яку потрібно відредагувати - це sql_pass в блоці source; вкажіть в ній свій пароль mysql.

source src1
type = mysql
sql_host = localhost
sql_user = root
sql_pass = your_root_mysql_password
sql_db = test
sql_port = 3306
sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP (date_added) AS date_added, title, content \
FROM documents
sql_attr_uint = group_id
sql_attr_timestamp = date_added
>
index test1
source = src1
path = / var / lib / sphinx / test1
docinfo = extern
>
searchd
listen = 9306: mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
binlog_path = / var / lib / sphinx /
>

Більше конфігурацій можна знайти в файлі /etc/sphinxsearch/sphinx.conf.sample, який містить докладний опис всіх змінних.

4: Управління індексом

В даному розділі показано, як додати дані в індекс Sphinx, і оновити індекс за допомогою cron.

Щоб додати дані в індекс, використовується тільки що створений конфігураційний файл.

sudo indexer --all

Команда повинна повернути:

У середовищі виробництва потрібно постійно підтримувати індекс в актуальному стані. Для цього створіть cronjob. Відкрийте crontab:

Цей cronjob буде запускатися кожну годину і додавати дані в індекс, звертаючись до створеного раніше конфігураційного файлу. Скопіюйте та вставте в кінець файлу наступне правило:

@hourly / usr / bin / indexer --rotate --config /etc/sphinx/sphinx.conf --all

Тепер пошукова система Sphinx готова до запуску.

5: Запуск Sphinx

Щоб запустити демон Sphinx, використовуйте systemctl.

sudo systemctl start searchd

Переконайтеся, що демон Sphinx запущений:

sudo systemctl status searchd

Команда повинна повернути:

6: Тестування пошуку

Тепер спробуйте знайти дані за допомогою Sphinx. Підключіться до SphinxQL за допомогою інтерфейсу MySQL (командний рядок зміниться на mysql>).

Спробуйте знайти пропозицію:

SELECT * FROM test1 WHERE MATCH ( 'test document'); SHOW META;

Як бачите, система Sphinx виявила два збіги з індексу test1. Команда SHOW META; показує відповідності кожного ключового слова в реченні.

Спробуйте виконати пошук за ключовими словами:

CALL KEYWORDS ( 'test one three', 'test1', 1);

В індексі test1 система Sphinx знайшла:

  • 5 збігів в 3 документах для ключа test.
  • 2 збіги в 1 документі для ключа one.
  • 0 збігів в 0 документах для ключа three.

Тепер можна видалити тестову БД Sphinx:

DROP DATABASE test;

Закрийте оболонку MySQL:

висновок

Даний посібник допомагає встановити Sphinx і виконати простий пошук даних за допомогою SphinxQL і MySQL.

За цим посиланням можна знайти реалізації Sphinx API для PHP, Perl, Python, Ruby і Java.

Користувачі Nodejs можуть знайти пакет SphinxAPI за цим посиланням.

Sphinx дозволяє додати спеціальний пошук на сайт. Більш детальну інформацію щодо використання Sphinx можна знайти на сайті проекту.

Схожі статті