Sphinx est un moteur de recherche en texte intégral basé sur SQL à haute performance. Ses performances figurent parmi les meilleures dans le domaine des moteurs de recherche en texte intégral. Avec Sphinx, nous pouvons mettre en œuvre des fonctions de recherche plus professionnelles que la base de données elle-même, et de nombreuses optimisations de performance ciblées sont disponibles.

Fonctionnalités de Sphinx
- Création rapide d'index : un index de près de 1 million d'enregistrements peut être créé en environ 3 minutes. De plus, l'indexation incrémentielle est utilisée, ce qui rend la reconstruction de l'index très rapide.
- Vitesse de recherche ultra-rapide : même avec une grande quantité de données comme 10 millions d'enregistrements, la vitesse de requête reste au niveau de la milliseconde. Pour 2-4 GB de texte, le temps de requête moyen est inférieur à 0.1 seconde.
- Des API de recherche ont été conçues pour de nombreux langages de script, tels que PHP, Python,Perl, Ruby, etc. Par conséquent, vous pouvez appeler commodément les interfaces associées de Sphinx dans la plupart des applications de programmation.
- Un plugin de moteur de stockage a été conçu pour MySQL. Par conséquent, si vous utilisez Sphinx avec MySQL, cela ne pourrait pas être plus pratique.
- Prend en charge la recherche distribuée, permettant une mise à l'échelle horizontale des performances du système.
Schéma d'architecture du moteur de recherche PHP+MySQL+Sphinx

Installation de Sphinx dans MySQL
Il existe deux façons d'installer Sphinx sur MySQL :
- La première façon consiste à utiliser des appels API. Nous pouvons utiliser PHP, Python,Perl, les fonctions API de Ruby et d'autres langages de programmation pour effectuer des requêtes. Cette méthode ne nécessite pas de recompiler MySQL, implique moins de modifications entre les modules et est relativement flexible.
- La deuxième méthode nécessite de recompiler MySQL et de compiler Sphinx dans MySQL en tant que plugin. Cette méthode nécessite moins de modifications du programme — vous n'avez qu'à modifier les instructions SQL. Cependant, la condition préalable est que votre version de MySQL doit être 5.1 ou supérieure.
Voici la première méthode d'installation :
#下载最新稳定版 wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz tar xzvf sphinx-0.9.9.tar.gz cd sphinx-0.9.9 ./configure --prefix=/usr/local/sphinx/ --with-mysql --enable-id64 make make install
Installation du plugin de segmentation des mots chinois Coreseek pour Sphinx
Note : Le tutoriel d'installation de coreseek provient deici, le processus détaillé est le suivant :
Installation et mise à niveau d'autoconf
Comme coreseek nécessite autoconf version 2.64 ou supérieure, vous devez mettre à niveau autoconf ; sinon, des erreurs se produiront. Depuishttp://download.chinaunix.net/download.php?id=29328&ResourceID=648Téléchargez autoconf-2.64.tar.bz2. La méthode d'installation est la suivante :
tar -jxvf autoconf-2.64.tar.bz2 cd autoconf-2.64 ./configure make make install
Téléchargement de coreseek
La nouvelle version de coreseek regroupe le dictionnaire et le code source de Sphinx dans un seul paquet, il vous suffit donc de télécharger le paquet coreseek.
wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
Installation de mmseg (le dictionnaire utilisé par coreseek)
tar xzvf coreseek-3.2.14.tar.gz cd mmseg-3.2.14 ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决 ./configure --prefix=/usr/local/mmseg3 make && make install cd ..
Installation de coreseek (Sphinx)
cd csft-3.2.14 sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql make && make install cd ..
Test de la segmentation de mots mmseg et de la recherche coreseek
Remarque : vous devez définir à l'avance le jeu de caractères sur zh_CN.UTF-8 pour garantir un affichage correct du chinois. Le jeu de caractères de mon système est en_US.UTF-8, ce qui fonctionne aussi.
cd testpack cat var/test/test.xml #此时应该正确显示中文 /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml /usr/local/coreseek/bin/indexer -c etc/csft.conf --all /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索 此时正确的应该返回 words: 1. '网络': 1 documents, 1 hits 2. '搜索': 2 documents, 5 hits
Génération du dictionnaire mmseg et des fichiers de configuration
La nouvelle version les a déjà générés automatiquement.
Résumé
En tant que moteur de recherche SQL en texte intégral haute performance, Sphinx mérite une attention continue de la part des développeurs, en particulier son support d'API multilingue, qui facilite son utilisation par les développeurs.
Source :http://www.codeceo.com/article/sphinx-sql-search-engine.html
Auteur : Manong.com – Xiaofeng