Méthodes
La recherche
textuelle s’effectue suivant deux méthodes. Une méthode qualifiée de simple
et la méthode booléenne.
Les deux méthodes
utilisent les fonctions
MATCH (
colonnes ) AGAINST ( chaîne
recherchée )
SELECT titre, MATCH (texte, commentaire, titre)
AGAINST ( ‘test’ )
FROM example_fulltext
titre |
MATCH
(texte, commentaire, titre) AGAINST ( 'test' ) |
blogibulga |
0 |
blogibulga |
0 |
blogibulga |
0 |
blogibulga |
0 |
blogibulga |
0 |
blogibulga |
2.243120036181 |
Cette fonction
renvoi un décimal correspondant à la pertinence de la chaîne recherchée
dans les colonnes de la recherche. Un résultat nul est renvoyé lorsque
le mot n’a pas été rencontré dans la table.
De la même
façons si aucun résultat supérieur à 0 n’est renvoyé cela peut signifier
qu’aucune ligne de la table ne contient la chaîne recherchée ou que la
chaîne rechercher est présente dans la moitié ou plus des enregistrements.
La fonction
en elle-même ne permet pas de filtrer les résultats, elle indique uniquement
un degré de pertinence. Tous les enregistrements sont donc renvoyer. Puisque
l’absence de la chaîne est signalée par un 0 l’on peut donc effectuer
un filtrage grâce à cette même fonction.
SELECT titre, MATCH (texte, commentaire, titre)
AGAINST ( ‘test’ )
FROM example_fulltext
WHERE MATCH (texte, commentaire, titre) AGAINST ( ‘test’ )
La valeur
0 étant évaluée à false , les tupples évalués à 0 ne sont pas renvoyé
titre |
MATCH
(texte, commentaire, titre) AGAINST ( 'test' ) |
blogibulga |
2.243120036181 |
A partir
de la version 4.0.1, il est possible d’aller plus loin dans les
recherches textuelles en utilisant la méthode booléenne. La recherche
n’est alors plus sensible à la case, il est aussi possible d'effectuer
une recherche dans les colonnes de type BLOB et d’utiliser des opérateurs
booléens.
Opérateur |
Explication |
Example |
+ |
Le
mot doit être présent dans toutes les lignes pour que la recherche
soit valide |
+
mot_a mot_b Permet d'optenir un rang plus elevé pour
les ligne contenant les deux mots |
- |
Le
mot n’a pas à être présent dans toutes les lignes pour que
la recherche soit valide |
mot_a
- mot_b
Permet d'optenir un rang moins elevé pour les ligne
contenant les deux mots |
* |
Opérateur
permettant d’omettre un nombre indéterminé de lettre sur un
mot |
mot_a*
Recherche les mot commencant par mot_a |
<
et > |
Diminue
/ augmente le poids du mot dans la pertinence global |
+mot_a
>mot_b
Donne un rang plus elevé à mot_a mot_b |
~ |
Diminue
la pertinence du mot dans la ligne sans exclusion |
mot_a
~ mot_b Permet de marquer mot_b négativement sans l'exclure |
‘’
‘’ |
Permet d’introduire des caractères non alpha-numériques ou de donner une phrase |
"grande
chanson" permet d'obtenir la phrase petit cheval mais pas
"grande et longue chanson". |
(
) |
Permet
de définir un groupe d’expression |
|
& |
ET
logique |
|
| |
OU
logique |
|
|