Sphinx - это бесплатная полнотекстовая поисковая система с открытым исходным кодом, которая может быть интегрирована в различные веб-приложения для обеспечения быстрых и качественных результатов поиска.
В этой статье вы узнаете, как настроить поисковую систему Sphinx для индексации и поиска в примере базы данных MariaDB на экземпляре сервера Vultr CentOS 7. Это даст вам некоторые предварительные идеи о том, как использовать Sphinx в вашем проекте.
Предпосылки
- Разверните новый экземпляр сервера CentOS 7 с панели управления Vultr.
- Используйте пользователя sudo без полномочий root для входа в систему с вашего терминала SSH. Посмотрите, как создать пользователя sudo в этой статье .
Шаг 1: Обновите вашу систему
sudo yum update -y && sudo reboot
После завершения перезагрузки системы используйте того же пользователя sudo для повторного входа в систему.
Sphinx может использоваться для поиска в различных источниках данных, таких как базы данных SQL, текстовые файлы, файлы HTML и т. Д. Здесь давайте посмотрим, как использовать Sphinx для поиска в базе данных MariaDB.
Установите MariaDB, используя YUM:
sudo yum install mariadb mariadb-server
Запустите сервис MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
В целях безопасности выполните безопасную установку MySQL:
sudo /usr/bin/mysql_secure_installation
Завершите эту процедуру в соответствии со следующими инструкциями:
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n]: Input Y, then press Enter
New password: Input a new password for root, press Enter
Re-enter new password: Input the same password again, then press Enter
Remove anonymous users? [Y/n]: Input Y, then press Enter
Disallow root login remotely? [Y/n]: Input Y, then press Enter
Remove test database and access to it? [Y/n]: Input Y, then press Enter
Reload privilege tables now? [Y/n]: Input Y, then press Enter
После завершения безопасной установки MySQL вам нужно будет установить новый пароль для пользователя MySQL «root». В этом уроке я буду называть его вашим паролем.
Шаг 3: Установите последнюю версию Sphinx
Чтобы установить последнюю версию Sphinx, вам необходимо скачать соответствующий пакет rpm с официального сайта Sphinx:
cd ~
wget http://sphinxsearch.com/files/sphinx-2.2.10-1.rhel7.x86_64.rpm
sudo yum install sphinx-2.2.10-1.rhel7.x86_64.rpm
Шаг 4: Создать базу данных для тестирования
Используйте следующие команды MySQL для создания базы данных с именем «test»:
mysql -u root -p -e "CREATE DATABASE test"
Когда вас попросят ввести пароль, введите пароль, который вы установили ранее, и нажмите Enter.
Теперь импортируйте тестовые данные из файла sql примера Sphinx:
mysql -u root -p test < /usr/share/doc/sphinx-2.2.10/example.sql
Снова введите тот же пароль и затем нажмите Enter, чтобы завершить импорт.
Откройте файл конфигурации Sphinx /etc/sphinx/sphinx.conf
:
sudo vi /etc/sphinx/sphinx.conf
На данный момент вам нужно только установить имя пользователя sql_user
и пароль MySQL sql_pass
:
sql_user = root
sql_pass = yourpassword
Сохранить и выйти:
:wq
Шаг 6: Запустите демоны indexer и searchd
И indexer, и searchd являются важными компонентами Sphinx. Индексатор отвечает за сбор данных из источника данных, а searchd является частью поисковой системы, которая фактически выполняет поиск.
Обязательно выполняйте следующие команды по порядку, иначе вы столкнетесь с ошибками.
sudo indexer --all
sudo searchd
Чтобы регулярно обновлять статус индекса, создайте задание cron:
sudo crontab -e
Введите следующую запись:
0 * * * * /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all
Сохранить и выйти:
:wq
Это задание cron будет обновлять статус индекса ежечасно.
Шаг 7: Проверьте свою поисковую систему Sphinx
Вы можете использовать предопределенный скрипт на python для проверки вашей настройки Sphinx:
python /usr/share/sphinx/api/test.py this is my test document
Эта команда будет искать «это мой тестовый документ» в примере базы данных MySQL, а затем покажет вам результат поиска.
На этом мы завершаем этот урок. Sphinx также включает в себя API поиска, который можно использовать в ваших собственных проектах PHP, Perl, Python, Ruby или Java. Более подробная информация доступна на официальном сайте Сфинкса.