Pour savoir où on va, il faut savoir d'où l'on vient

Vous avez
une question ?
Un projet ?

Contactez nous !
 

Contactez-nous

Vous avez une question ? un projet ? 
Vous souhaitez plus d'informations sur un produit ? sur notre offre ? 
Contactez-nous, on vous répond sous 4H.

eZHumanCAPTCHACode reload
retour

Le moteur d’indexation-recherche

Le moteur d’indexation-recherche

Il existe des moteurs d’indexation-recherche uniquement consacrés aux pages web ; ils ne nous intéressent pas beaucoup en termes d’architecture.
Il existe aussi des moteurs d’indexation-recherche plus génériques, qui peuvent indexer n’importe quoi. Le plus célèbre, et sans doutes le plus puissant, est le moteur Lucene, de la fondation Apache, qui a été adopté par pratiquement tous les produits de gestion de contenus et de gestion de documents, qu’ils soient open source ou non.
Ce qui nous intéresse ici, c’est l’utilisation d’un moteur tel que Lucene dans la gestion des données d’une plateforme web. Un tel moteur a de nombreux atouts :

  • Il est plus performant qu’un SGBD sur certaines typologies de requêtes complexes ;
  • En particulier, il excelle dans des requêtes qui réunissent contenus structurés et contenus non-structurés. Par « contenus non-structurés », on entend les textes et documents.
  • Il supporte de très gros volumes sans dégradation des performances. Typiquement plusieurs dizaines de millions d’items sont monnaie courante.
  • Sa fonction n’est pas de stocker, ni de gérer l’information, il donne juste un moyen de la retrouver par la recherche.

Intégrer un moteur de recherche en complément du SGBD est dans la logique que nous citions plus haut, de ne pas s’appuyer systématiquement sur la même petite panoplie d’outils, mais d’utiliser au contraire le meilleur outil pour chaque fonction.
Sur plusieurs grands sites d’annonces, nous avons ainsi intégré des moteurs de recherche tels que Lucene. La base de données reste le lieu de référence de gestion de l’information, mais les objets à rechercher sont passés au moteur pour indexation. Ils peuvent être par exemple exportés au format Xml, et analysés dans cette forme par l’indexation. Ou bien les APIs d’indexation peuvent être appelées directement par un traitement batch lisant dans la base. Mais on préfèrera nettement considérer la base de données et la fonction d’indexation-recherche comme deux sous-systèmes disjoints, qui doivent interagir uniquement au travers du middleware ou bien par des APIs bien définies, et non un traitement batch « à cheval » sur les deux.