Publié le

Publié à l'origine sur le site de Whisky Echo Bravo

Une recherche par facettes des modules de recherche par facettes, sur drupal.org

Nobel Prize Winners - Application de démonstration du projet Flamenco

Recherche par facettes - Répertoire des arts et littératures hypermédiatiques

Konigi - Exemple de site utilisant Faceted Search

Inéaguide - Exemple de site utilisant Faceted Search avec Views et Google Maps

EthicsShare - Exemple de site utilisant Solr

La Maison Blanche - Exemple de site utilisant Solr

Human Rights Watch - Exemple de site utilisant Solr

Le développement du module Faceted Search pour Drupal nous a permis, comme à d’autres d’ailleurs, d’appliquer la recherche par facettes à une foule de projets de petite ou de moyenne envergure qui, il n’y a pas si longtemps, n’auraient pu que rêver disposer d’un tel moteur de recherche. En effet, la recherche par facettes a longtemps été l’apanage des grands sites disposant de grands moyens, c’est-à-dire d’assez de moyens pour acquérir et intégrer des technologies propriétaires telles que Endeca ou Google Search Appliance. C’est pourquoi on ne voyait guère la recherche par facettes que sur des sites marchands, des intranets de grandes entreprises ou sur les sites de grandes bibliothèques.

Les temps ont changé. Je connais quelques chercheurs universitaires qui ont construit eux-mêmes des sites Drupal, sans aide technique externe, et qui utilisent Faceted Search comme outil de visualisation de données. En effet, la possibilité de croiser facilement les informations selon plusieurs axes complémentaires leur permet de découvrir des tendances parfois insoupçonnées dans les données qu’ils ont compilées pour leurs travaux.

Dans plus de la moitié de nos propres projets, nous trouvons désormais des applications à la recherche par facettes. Faceted Search nous permet d’exposer l’information du site aux visiteurs de manière intéressante et d’offrir une alternative aux traditionnelles structures de navigation hiérarchiques rigides. Sur certains portails d’information, la recherche par facettes est au cœur du projet, le principal outil d’exploration de l’information. Sur les intranets, où l’information évolue généralement de manière très « organique », au gré des participants et sans un grand contrôle central, il est idéal d’articuler la navigation du site autour des facettes, puisque celles-ci s’adaptent à l’information présente sur le système.

Le Laboratoire NT2, pour qui nous avons réalisé de nombreuses améliorations au module Faceted Search, l’utilise dans nombre de ses projets. Nous avons également découvert, au fil du temps, une foule de sites remarquables basés sur Faceted Search, tels que Konigi, les prix Pulitzer, Inéaguide, la Banque mondiale (au moins un site intranet ou deux), le International Food Policy Research Institute. Les statistiques d’utilisation indiquent que plus de 1 800 sites Drupal exploitent le module Faceted Search (ce qui ne compte que les sites qui communiquent l’information).

Une pluralité de choix

Le projet Faceted Search a surtout été une très belle expérimentation sur la manière d’intégrer harmonieusement la recherche par facettes à un système de gestion de contenu, en suivant les meilleures pratiques d’interface utilisateur pour ce genre d’outil (notamment en s’appuyant sur les résultats du projet Flamenco, un pionnier en la matière), tout en assimilant les paradigmes inhérents à Drupal.

Si Faceted Search fut le premier à démocratiser la recherche par facettes sous Drupal, plusieurs solutions ont émergé depuis, dont Solr (basé sur le puissant moteur Lucene, écrit en Java), Lucene API (basé sur une implémentation PHP de Lucene) et Sphinx (un moteur écrit dans le langage C++).

L’un des objectifs initiaux ayant guidé le développement de Faceted Search était la facilité de déploiement. Lorsqu’un serveur peut accueillir Drupal, il peut aussi accueillir Faceted Search, puisque ce dernier ne repose que sur Drupal et des composants déjà requis par Drupal. Une conséquence lourde de ce choix est la dépendance envers MySQL, une contrainte de taille pour un moteur de recherche. Il est en effet très difficile de développer un moteur de recherche performant à partir d’une base de données relationnelle (d’ailleurs, les autres technologies nommées ci-dessus s’affranchissent complètement de SQL). Malgré quelques similitudes, la problématique d’un moteur de recherche diffère grandement de celle d’un système de gestion de bases de données. Un système de base de données relationnelle n’a aucune notion de pertinence des résultats : c’est noir ou blanc, un élément appartient ou non à l’ensemble de résultats. Un système de base de données a l’obligation d’offrir un temps réponse rapide lors des mises à jour, tandis que le moteur de recherche peut se permettre de sacrifier la vitesse des mises à jour pour optimiser la recherche.

Bref, la contrepartie de la facilité de déploiement de Faceted Search est une faible performance. En pratique, ceci signifie généralement un fonctionnement adéquat avec tout au plus quelques milliers de contenus. Au-delà, il faut explorer d’autres avenues. Solr assurera une performance exceptionnelle et une grande capacité aux changements d’échelle si la fréquentation du site devait augmenter significativement et c’est pourquoi nous l’adoptons sur certains de nos projets. Sauf que Solr n’est pas trivial à déployer, puisqu’il requiert un serveur d’application Java. La société Acquia offre un service Solr hébergé grâce auquel les principaux soucis techniques sont éliminés, mais son coût pourra ne pas convenir à tous. Sphinx, quant à lui, requiert l’installation d’une nouvelle application sur le serveur, ainsi qu’un sérieux travail de configuration.

Pour une facilité de déploiement similaire à celle de Faceted Search, reste donc Lucene API. Ce module Drupal est basé sur l’implémentation de Lucene offerte par le Zend Framework, un cadre d’applications PHP. Ceci promet donc une performance proche de celle du Lucene original, tout en jouissant de la facilité de déploiement caractéristique des applications PHP. Si sa performance et son adaptation aux changements d’échelle ne sont pas celles de Solr, Lucene API risque néanmoins de convenir à un grand nombre de sites, petits et grands.

Perspectives futures

Alors qu’il devient nécessaire de songer à la migration du module Faceted Search vers Drupal 7, un travail qui s’annonce laborieux étant donné que ses requêtes SQL sont très complexes et que la couche d’intégration à la base de données a complètement changé dans la nouvelle mouture de Drupal, la question se pose à savoir si l’effort en vaut la chandelle. Avant de lancer un tel travail, il s’agira d’évaluer la possibilité de proposer le module Lucene API comme successeur à Faceted Search.

Chez Whisky Echo Bravo, nous sommes donc tiraillés entre Solr et Lucene API. Solr est de mise sur certains projets d’envergure où la performance est critique et la capacité de répartir la charge sur plusieurs serveurs une exigence, tandis que Lucene API pourrait s’imposer pour les projets plus modestes et souvent placés en hébergement mutualisé, tout en offrant une performance supérieure à celle de Faceted Search. Les deux technologies, Solr et Lucene API, ont certainement leur place et risquent de coexister pour un bon moment encore. En terme d’interface utilisateur, aucun des deux modules n’a encore le raffinement de Faceted Search. Nous avons donc du pain sur la planche!

Pour nous, comme pour la communauté Drupal, il conviendra de créer un maximum de synergies entre les deux projets afin de minimiser le dédoublement du travail, une idée d’ailleurs évoquée au cours d’une table ronde sur Solr, tenue à Paris pendant la conférence DrupalCon de septembre dernier, et reçue avec enthousiasme.

Commentaires