samedi 4 septembre 2010
Sphinx : j'en dit un peu plus sur ce moteur de recherche
Dans la rubrique Mysql
Je parlais il y a 2 jours de sphinx en expédiant une explication en 2 secondes.
Le lendemain, je vois sur Planet Mysql que Shlomi Noach publiait un article pour remettre les pendules à l'heure sur ce qu'est sphinx
Je vais donc en dire un peu plus.
Sphinx est un moteur d'indexation/recherche open-source sous GPLv2.
On utilise indexer pour scanner ce qu'il faut indexer, cela génère des fichiers que searchd rend consultables.
Pour attaquer searchd, on a search en ligne de commande.
Mais on a aussi
- SphinxSE: un engine mysql, il sera inclus directement dans les prochaines versions de mariaDb
- SphinxAPI: que l'on peut utiliser en php avec un package pecl dedié mais aussi avec les apis officielles Php, Python, Java, Ruby, pur C, fournies avec sphinx, ou bien encore Riddle pour Ruby, Sphinx::Search pour perl, C++ Sphinx client, Haskell Sphinx client, C# .NET client, ...
- SphinxQL: une syntaxe sql adaptée
Recherche
Pour la recherche elle même on a les syntaxes avancées sur le texte ...
- et, ou , mais pas,
"hello world" @title "example program"~5 @body python -(php|perl) @* code
- les quorum (je donne 7 mots et je veux qu'il y en aie au moins 4 dans chaque résultats)
- la pertinence (ce mot là a plus de poids dans le titre, celui ci partout, ... )
- la distance dans le texte : ces 2 mots là doivent être séparés par moins de n mots
- Des remplacements
- de caractères pour les problèmes de charset
- les remplacements magiques (si je cherche email, je trouve aussi les contenus avec le mot courriel) sur base de vos listes (voir exemple en bas)
- Morphologie linguistique, stemming (gestion des pluriels),
- listes de mots interdits
- listes de dictionnaires personnels pour la correction magique
- ...
.. Les critères de filtre et tri annexe
- groupes (avec decompte par groupe)
- temporels
- géographiques
- ...
J'en passe bien sur.
Le service searchd est consultable via réseau (donc si vous utilisez SphinxSE il n'est pas embarqué dans la DB il peut/ils peuvent être ailleurs) avec ssl et tout le brol.
Indexation
La première chose à distinguer c'est qu'il n'est pas limité à mysql ni même à des bases de données. On peut indexer tout ce qui peut être parsé, moyennant une conversion vers un fichier xml.
On peut indexer des sources hétérogènes les mélanger comme on peut indexer partiellement une source monolithique.
On peut indexer "sur le coté" pendant que l'index précédent reste actif et swapper à la fin (très difficile à faire : il faut ajouter un --rotate)
On peut indexer par petit morceaux et exploiter les partitions ou les merger
On peut répartir les indexs sur plusieurs serveurs
Brefs il y a moyen de distribuer la recherche et l'indexation.
Il y a des techniques de RealTime indexing mais c'est dans la 1.10-beta


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

A voir : 
Avec
La première présentation de Sacha Kocovski qui nous a montre comment il a travaille en prenant en exemple l'évaluation de deux sites web des hôpitaux Erasme et Brugmann par l'utilisation de tests utilisateur. Il nous a montre des questions types, des façons de faire, quelques définitions.
David Geerts(KUL), a présenté "personas 2.0". Si j'ai bien compris cette présentation en anglais, c'est la création dans un premier temps d'un personnage virtuel ayant une présence réelle sur le web, avec une vie sociale, un caractère,... qui représente l'utilisateur type de mon application. Et ensuite une déclinaison matérialise de cet utilisateur sous diverses formes : un poster, une postiche, un mug, ... pour que tous les acteur du développement de l'application puissent recentrer sans cesse leur travail sur cet utilisateur type.
Jean-Marc Hardy a fait la présentation qui aura apparemment le plus plu, et j'en suis. Il est parti des critères de Scapin et Bastien mais pour les contenu au lieu du contenant.
Jean Vanderdonckt nous montre pour la 4eme présentation, 2 cas dans le thème officiel de cette année : "les services de santé".
... 


-

La sécurité, ca se vit déjà tous les jours, alors pourquoi se donner plus de travail, alors qu'une série de bonnes pratiques permettent de s'éviter pas mal de problèmes.
Présentation en anglais.
eZ Component, dont on avait pu lire une bonne description dans un direction php du début de cette année, nous est présenté par Derick. Un framework de plus ? oui, comme Pear que j'aime bien ou zend platform.
Une petite pièce de théatre de
De loin ma conf préférée de la journée. J'ai vérifié, ce n'est pas du patriotisme, cette conf a largement été appréciée.
On a eu là un vrai bon retour d'expérience. Sans donner de leçon, Denis Van Nuffelen nous a présenté et justifié leurs utilsation et cadre d'utilisation de PHP au sein du
Chaque année on a de nouveaux retours indiques. PHP n'inspire pas confiance aux décideurs qui ne le connaissent pas, puis un php rentre discretement et le développement est tellement rapide que l'équipe ou l'individu qui l'utilise atteint une réactivité bien plus rapide que les développements enkylosés de procédures.
Thomas STEINER y a fait son stage et nous a fait une belle pub des services google. Après la partie un peu marketing mal planqué pour google, on a commencé a voir son api pour travailler avec adWords de goodle à partir d'un appli php.
Mathieu Laurent, membre de l'équipe Claroline.
Sébastien Piraux, développeur 





