13.6 Recherche en Texte-entier (Full-text) dans MySQL
13 Fonctions à utiliser dans les clauses SELECT et WHERE
Manuel de Référence MySQL 4.1 : Version Française
. Booléens de recherches en texte plein . Recheche en texte plein avec extension de requête . Restrictions avec full-text ->Paramétrage précis de la recherche Full-text de MySQL . A faire dans la recherche Full-text
|
13.6.4 Paramétrage précis de la recherche Full-text de MySQL La recherche sur texte entier n'a malheureusement pas encore beaucoup
de paramètres modifiables par l'utilisateur, même si l'ajout de
certains apparaît très haut dans le TODO. Si vous utilisez MySQL depuis
les sources ( Installer MySQL à partir des sources ), vous pouvez mieux contrôler
le fonctionnement de la recherche sur texte entier.
La recherche sur texte entier a été paramétrée pour une efficacité de recherche
maximale. La modification du comportement par défaut ne fera généralement que
diminuer la qualité des résultats des recherches. Il ne faut pas modifier les
sources de MySQL sans savoir précisément ce qu'on fait.
-
La taille minimale des mots à indexer est définie dans la variable
ft_min_word_len
de MySQL.
SHOW VARIABLES
.
Vous pouvez modifier cette valeur pour celle que vous préférez, puis reconstruire
les index
FULLTEXT
.
(Cette variable n'existe que pour la version 4.0 de MySQL)
La valeur par défaut de cette option est de 4 caractères.
Modifiez la, puis recompilez les index
FULLTEXT
.
Par exemple, si vous souhaitez pouvoir rechercher des mots de 3 caractères,
vous pouvez donner à cette variable la valeur suivante dans le fichier
d'options :
[mysqld] ft_min_word_len=3
|
Puis, relancez le serveur et recompilez vos index
FULLTEXT
.
-
La liste des mots rejetés est définie
dans la varaible
ft_stopword_file
.
SHOW VARIABLES
.
Modifiez le selon vos goûts, recompilez MySQL et reconstruisez vos index
FULLTEXT
.
-
Le taux de 50% est déterminé par la méthode de pondération choisie.
Pour le désactiver, il faut changer la ligne suivante dans
myisam/ftdefs.h
:
#define GWS_IN_USE GWS_PROB
|
Par la ligne:
#define GWS_IN_USE GWS_FREQ
|
Puis recompiler MySQL.
Il n'est pas nécessaire de reconstruire les index dans ce cas.
Note
: En faisant ces modifications, vous diminuez
énormément
les capacités de MySQL
à fournir des valeurs pertinentes pour la fonction
MATCH()
.
Si vous avez réellement besoin de faire des recherches avec ces mots courants, il est
préférable de rechercher
EN MODE BOOLEEN
, lequel ne respecte pas le taux de 50%.
-
Parfois le gestionnaire du moteur de recherche voudrait changer les opérateurs utilisés
pour les recherches booléennes sur des textes entiers. Ceux ci sont définis dans la
variable
ft_boolean_syntax
.
SHOW VARIABLES
.
Cependant, cette variable n'est pas modifiable, sa valeur est fixée dans
myisam/ft_static.c
.
Pour les modifications qui nécessitent une reconstruction des index
FULLTEXT
,
la méthode la plus simple pour les tables MyISAM est l'opération suivante,
qui reconstruit les fichiers d'index :
mysql> REPAIR TABLE nom_de_table USE_FRM;
|
|