IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)


MYSQL et la recherche textuelle

30/04/2003

Par "Olivier Miossec" (omiossec)

MYSQL et la recherche textuelle

Index
Configuration
Gestion des index
Méthodes
Etude de cas

 

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 

blogibulga 

blogibulga 

blogibulga 

blogibulga 

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