mardi 26 juin 2012
Sphinx : éléments de base.
Dans la rubrique Mysql
Plusieurs fois j'ai déjà parlé de sphinx, mais je me rends compte que je n'ai pas une seule présentation "de base".
Je n'ai pas l'intention de refaire ce qui existe déjà mais je voulais présenter le workflow général.
Je trouverai très chouette que si quelqu'un connait elasticSearch, ou solr, ou autre ..., il fasse de même que je puisse le référencer pour comparaison.
SphinxSearch propose un outil d'indexation : indexer
Cet outil va lire 3 des 4 sections du fichier de configuration
- Les indexs
- Les sources
- Les paramètres de l'indexation
Les index sont de 2 types.
- lié à une source
- agrégateurs de plusieurs autres indexes (locaux ou distant) ; On les appelle
distribués
Une source c'est la définition qui permet d'aller chercher l’information à indexer et une définition de chaque champs.
Ca peut-être une requête SQL sur Mysql ou Posgress
Ou sur un contenu XML.
Le Xml est surtout pensé pour en faire un format d’échange pour en fin de compte pouvoir indexer, tout ce qui peut être transformé en XML.
Même si je ne connais pas très bien lucene et solr, c'est sur le point précédent que ces derniers sont plus fort que sphinx. Ils sont plus adaptés pour indexer des sources hétérogènes, des documents.
Après avoir executé l'indexation on a donc "lu" la source et fabriqués des indexs.
On a un premier niveau pour exploiter ces indexs
Faire une recherche
On peut utiliser search
Celui-ci attaque directement l'index. Sans passer par le service. C'est donc très utile pour tester ses index mais il ne faut en aucun cas envisager une utilisation en production.
En outre, puisqu'il n'utilise pas searchd, il ne permet pas d'utiliser les indexs distribués
On va donc lancer ce service : searchd
Celui-ci va utiliser 2 sections du fichier de configuration.
- Les indexs
- Les paramètres du service.
Le service va charger en mémoire les indexs et les rendre disponible via une api sur un port donné.
Puisqu'il y a service, il y a client
Jusqu'à présent j'ai vu 3 clients
- le plugin SphinxSE Engine pour mysql
- un simple client mysql qui se connecte directement au service et qui utilise un sql trafiqué : le SphinxQL
- le client php pecl::sphinx
Il y en a d'autres puisqu'il y a ruby, c++, perl, Haskell, C#, mais aussi des plugins tout prêts pour Yiiframework, Drupal, Symfony, phpBB, MovableType, MediaWiki, Phorum, Thinking Sphinx, Rails,... le tout à trouver sur la page plugin
Avec le client choisi on va pouvoir interroger l'index, servi localement ou sur le réseau par searchd
On récupère alors une liste d'id (uniques) et la valeur des attributs. (pas les textes)
On peut alors faire une jointure avec la source pour retrouver les données dans leur dernier état.


-
-![[T]](http://static.technorati.com/pix/icn-talkbubble.gif)


Il était temps.
Après
Sphinx
est un moteur de recherche full-text
-
Beaucoup trop de tuto ou articles que je lis dans la presse (Programmez, PHPSolution, ...) ou sur le net, présentent le "comment bien faire" en partant de zéro.
Étant donné que ces questions sont de plus en plus récurrentes sur sa boîte mail ou sur les mailing-lists de PEAR,
il a décidé d'écrire cette série de petits tutoriaux :
Vendredi aura lieu le prochain apérophp à
Au mois d'Août aura lieu le 2ème 







