Sphinx est un moteur de recherche en texte intégral gratuit et open source qui peut être intégré dans diverses applications Web pour fournir des résultats de recherche rapides et de haute qualité.
Cet article vous montrera comment configurer un moteur de recherche Sphinx pour indexer et rechercher un exemple de base de données MariaDB sur une instance de serveur Vultr CentOS 7. Il vous donnera quelques idées préliminaires sur la façon d'utiliser Sphinx dans votre projet.
Conditions préalables
- Déployez une nouvelle instance de serveur CentOS 7 à partir du panneau de configuration Vultr.
- Utilisez un utilisateur sudo non root pour vous connecter à partir de votre terminal SSH. Découvrez comment créer un utilisateur sudo dans cet article .
Étape 1: mettez à jour votre système
sudo yum update -y && sudo reboot
Une fois le redémarrage du système terminé, utilisez le même utilisateur sudo pour vous reconnecter.
Sphinx peut être utilisé pour rechercher diverses sources de données, telles que des bases de données SQL, des fichiers texte, des fichiers HTML, etc. Ici, voyons comment utiliser Sphinx pour effectuer des recherches sur une base de données MariaDB.
Installez MariaDB à l'aide de YUM:
sudo yum install mariadb mariadb-server
Démarrez le service MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Pour des raisons de sécurité, effectuez l'installation sécurisée de MySQL:
sudo /usr/bin/mysql_secure_installation
Terminez cette procédure conformément aux instructions suivantes:
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
Une fois l'installation sécurisée de MySQL terminée, vous devrez définir un nouveau mot de passe pour l'utilisateur MySQL "root". Dans ce tutoriel, je vais l'appeler "votre mot de passe".
Étape 3: installez le dernier Sphinx
Pour installer la dernière version de Sphinx, vous devez télécharger le package rpm approprié depuis le site officiel de 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
Étape 4: créer une base de données pour les tests
Utilisez les commandes MySQL suivantes pour créer une base de données nommée "test":
mysql -u root -p -e "CREATE DATABASE test"
Lorsque vous êtes invité à fournir un mot de passe, saisissez celui que vous avez défini précédemment, puis appuyez sur Entrée.
Maintenant, importez les données de test à partir d'un exemple de fichier sql Sphinx:
mysql -u root -p test < /usr/share/doc/sphinx-2.2.10/example.sql
Saisissez à nouveau le même mot de passe, puis appuyez sur Entrée pour terminer l'importation.
Ouvrez le fichier de configuration Sphinx /etc/sphinx/sphinx.conf
:
sudo vi /etc/sphinx/sphinx.conf
Pour l'instant, il vous suffit de configurer le nom d'utilisateur sql_user
et le mot de passe MySQL sql_pass
, qui seraient:
sql_user = root
sql_pass = yourpassword
Sauvegarder et quitter:
:wq
Étape 6: démarrer l'indexeur et les démons searchd
Indexer et searchd sont tous deux des composants importants de Sphinx. Indexer est chargé de collecter les données à partir de la source de données, et searchd est la partie du moteur de recherche qui gère réellement les recherches.
Assurez-vous d'exécuter les commandes suivantes dans l'ordre, sinon vous rencontrerez des erreurs.
sudo indexer --all
sudo searchd
Pour mettre à jour régulièrement le statut de l'index, créez un travail cron:
sudo crontab -e
Saisissez l'entrée suivante:
0 * * * * /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all
Sauvegarder et quitter:
:wq
Ce travail cron mettra à jour le statut de l'index toutes les heures.
Étape 7: Testez votre moteur de recherche Sphinx
Vous pouvez utiliser un script python prédéfini pour tester votre configuration de Sphinx:
python /usr/share/sphinx/api/test.py this is my test document
Cette commande recherchera "ceci est mon document de test" dans l'exemple de base de données MySQL, puis vous montrera le résultat de la recherche.
Cela conclut ce didacticiel. Sphinx comprend également une API de recherche, qui peut être utilisée à partir de vos propres projets PHP, Perl, Python, Ruby ou Java. Plus d'informations sont disponibles sur le site officiel de Sphinx.