безкоштовно з міських телефонів України
Київ | 044 392-73-56 |
Харків | 057 728-49-18 |
Дніпро | 056 790-86-00 |
Одеса | 048 734-56-54 |
Львів | 032 229-58-50 |
Миколаїв | 051 270-12-63 |
Полтава | 053 262-53-74 |
Запоріжжя | 061 228-69-91 |
Sphinx є продуктивною та простою системою з відкритим вихідним кодом, призначеною для повнотекстового пошуку. За допомогою Sphinx можна проводити пошук даних у будь-яких джерелах: в текстових і HTML файлах, поштових скриньках, базах SQL і т.д.
Перед виконанням інструкції необхідно попередньо встановити та налаштувати сервер MySQL.
Також рекомендується створити не root користувача з доступом до sudo (але спочатку потрібно підключитися до сервера SSH).
В інструкції використовується текстовий редактор nano, для якого потрібно виконати команду:
yum install nano
Перед встановленням Sphinx, встановлюємо залежності:
sudo yum install -y postgresql-libs unixODBC
Натискаємо Enter. Якщо запитує пароль, введіть його.
Переходимо до каталогу tmp:
cd /tmp
Завантажуємо Sphinx:
wget http://sphinxsearch.com/files/sphinx-2.2.11-1.rhel7.x86_64.rpm
Натискаємо Enter
Встановлюємо Sphinx:
sudo yum install -y sphinx-2.2.11-1.rhel7.x86_64.rpm
Натискаємо Enter
Входимо в оболонку MySQL:
mysql -u root -p
Натискаємо Enter. Якщо запитує пароль, введіть пароль, який створювався під час створення сервера My SQL у посібнику з встановлення LAMP
Створюємо тестову базу даних (в інструкції назва бази даних test):
CREATE DATABASE test;
Натискаємо Enter
Імпортуйте зразки файлу SQL, що постачається разом із пакетом:
SOURCE /usr/share/doc/sphinx-2.2.11/example.sql;
Натискаємо Enter
Закриваємо оболонку MySQL:
quit
Натискаємо Enter
Конфігурації Sphinx зберігаються у файлі sphinx.conf.
Змінюємо назву файлу конфігурації на sphinx.conf2
sudo mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf2
Натискаємо Enter
Створюємо новий файл sphinx.conf:
sudo nano /etc/sphinx/sphinx.conf
Натискаємо Enter
І вставляємо в нього наступні рядки (пароль J2m!G2x2&T6e%1T2y необхідно замінити на власний пароль root для підключення до MySQL):
source src1 { type = mysql sql_host = localhost sql_user = root sql_pass = J2m!G2x2&T6e%1T2y 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/ }
Зберігаємо зміну у файлі, натиснувши клавіші Ctrl+x , потім клавішу y і потім клавішу Enter.
Додаємо дані до індексу, використовується раніше створений конфігураційний файл sphinx.conf
sudo indexer --all
Натискаємо Enter
Для того щоб постійно підтримувати індекс в актуальному стані, створюємо cron завдання:
crontab -e
Натискаємо Enter
Додаємо наступний код:
@hourly /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all
Це cron завдання буде запускатися щогодини і додавати дані до індексу, звертаючись до створеного раніше конфігураційного файлу.
Зберігаємо інформацію натиснувши клавіші Ctrl + C, натиснути одночасно клавіші Shift і « :» потім вказавши команду:
:wq
до двокрапки дописати літери wq
Натискаємо Enter
Запускаємо демон Sphinx:
sudo systemctl start searchd
Натискаємо Enter.Якщо запитує пароль ввести його
Переконуємося, що демон Sphinx запущено:
sql
Натискаємо Enter
Для пошуку даних за допомогою Sphinx, підключаємось до SphinxQL за допомогою інтерфейсу MySQL:
mysql -h0 -P9306
Натискаємо Enter
Пробуємо знайти пропозицію test document:
SELECT * FROM test1 WHERE MATCH('test document'); SHOW META;
Натискаємо Enter
Бачимо два збіги з індексу test1:
Виконуємо пошук за ключовими словами:
CALL KEYWORDS ('test one three', 'test1', 1);
Натискаємо Enter
В індексі test1 було знайдено:
5 збігів у 3 документах для ключа test.
2 збіги в 1 документі для одного ключа.
0 збігів у 0 документах для ключа three.
Виходимо зі SphinxQL:
quit
Натискаємо Enter
Входимо в оболонку MySQL:
mysql -u root -p
Натискаємо Enter. Якщо запитує пароль, ввести пароль під час створення mysql з посібника зі створення LAMP.
Видаляємо тестову базу:
DROP DATABASE test;
Натискаємо Enter
Виходимо з оболонки MySQL:
quit
Натискаємо Enter
Див. також:
Встановлення та налаштування Sphinx