бесплатно с городских телефонов Украины
Киев | 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 документе для ключа one.
0 совпадений в 0 документах для ключа three.
Выходим из SphinxQL:
quit
Нажимаем Enter
Входим в оболочку MySQL:
mysql -u root -p
Нажимаем Enter. Если запрашивает пароль, ввести пароль при создании mysql из руководства по созданию LAMP.
Удаляем тестовую базу:
DROP DATABASE test;
Нажимаем Enter
Выходим из оболочки MySQL:
quit
Нажимаем Enter
См.также:
Установка и настройка Sphinx