PRATIQUE ALGO/METHODES 
Expliquez-moi... Les avantages de l'indexation plein texte dans SQL
 
Description du fonctionnement de cette technologie de recherche rapide pour traiter de larges quantités de données. (25/08/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

Tous les systèmes de gestion de base de données offrent aujourd'hui des fonctionnalités d'indexation et de recherche en mode plein texte (ou full-text). L'intérêt de ces fonctionnalités n'est pas évident. Au premier abord, une recherche SQL parcourt effectivement le contenu de chaque cellule, et l'opérateur LIKE permet d'élargir les options de recherche au besoin.

La recherche full-text se différencie de la recherche simple en se basant sur l'index des mots non perturbateurs d'une entrée, c'est-à-dire excluant les mots les plus communs. Selon les implémentations, ces mots exclus peuvent être regroupés en liste interne au système, ou celui-ci peut simplement ne pas indexer les mots de moins de quatre ou trois lettres...

Les mots restants sont indexés dans le système, chacun formant une entrée aboutissant à une liste des positions où il se retrouve au sein de la base de données. Chacun peut également recevoir une évaluation de son importance au sein d'une page donnée.

Plutôt que de devoir parcourir l'ensemble du contenu de la base, une recherche full-text se lance tout d'abord sur cet index de mots, afin de renvoyer la liste des réponses adéquates, puis effectue une requête, normale cette fois, sur les réponses de cette liste.

Combinée à un outil d'analyse linguistique, la technologie full-text est également en mesure de mettre en corrélation les mots d'une même famille, par exemple "lapin", "lapins" et "lapiner".

De fait, la recherche full-text est un mode beaucoup plus efficace que la recherche classique pour obtenir une réponse rapide sur large nombre de données non structurées - pour peu que les tables parcourues disposent de l'index idoine.

Ces index sont par ailleurs mis à jour sur demande plutôt qu'automatiquement, comme c'est le cas pour les tables index sans mode full-text. En effet, il est le plus souvent nécessaire de préciser cette mise à jour après avoir modifié le contenu de la base. Cette synchronisation peut se faire avec une priorité plus ou moins grande selon que les nouvelles données doivent apparaître rapidement dans les résultats. Le plus souvent, on laisse cette propagation se faire dans la nuit...

Au sein de MySQL, les fonctionnalités de recherche utilisent l'opérateur MATCH..AGAINST de la commande SELECT. Par exemple, pour lancer une recherche sur plusieurs colonnes d'une table, on utilisera la commande suivante :

SELECT * FROM employé WHERE MATCH (nom,prenom) AGAINST ('Olivier' IN BOOLEAN MODE);

IN BOOLEAN MODE est l'un des deux arguments possibles (quatre pour MySQL 5.1), lançant une recherche booléenne.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page