PRATIQUE OUTILS 
MySQL : Recherche booléenne en texte intégral
 
Donnez plus ou moins d'importance aux résultats d'une requête selon les mots que vous cherchez. (06/10/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Tout bon SGBD autorise la recherche en texte intégral, c'est à dire qu'au lieu de faire une requête du type "WHERE colonne LIKE "%mot%", il est créé un index contenant la liste de tous les mots d'une colonne donnée.

Cet index peut être créé en même temps que la colonne (modifieur FULLTEXT(colonnes) ), ou en cours de route via une requête ALTER TABLE.

La recherche en texte intégral se fait ensuite via l'expression MATCH(colonnes) AGAINST('mots') :

SELECT * FROM cuisine WHERE MATCH(ingredients, recette, plat) AGAINST ('lapin civet rabbit');

L'un des intérêts de la recherche en texte intégral est de pouvoir utiliser des expressions booléennes, par exemple pour donner plus ou moins d'importance à un mot, via le modifieur IN BOOLEAN MODE :

SELECT * FROM cuisine WHERE MATCH(ingredients, recette, plat) AGAINST ('>lapin <civet ~rabbit') IN BOOLEAN MODE;

Voici les différentes expressions disponibles :

Expressions de recherche booléenne
Expression
Signification
+mot
Le mot doit être contenu dans le résultat
-mot
Le mot ne doit pas être contenu dans le résultat
~mot
Le mot ne doit pas forcément être dans le résultats. Les résultat qui le contiennent ont moins d'importance.
<mot
Donne une plus faible importance au mot
>mot
Donne une plus grande importance au mot
mot*
Le mot commence par...
"mot1 mot2"
Les mots doivent se suivre dans cet ordre
( )
Groupement de plusieurs expressions
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page