Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний 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 можна знайти на сайті проекту.