|
|
|
|
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
|
|
|
|
|
|
|