| 13.6 Recherche en texte intégral ( 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 intégral
 . Recherche en texte intégral avec extension de requête
 . Restrictions avec la recherche en texte intégral
 ->Paramétrage précis de la recherche en text intégral de MySQL
 . A faire dans la recherche Full-text
 
 
 | 
  13.6.4 Paramétrage précis de la recherche en text intégral 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 la liste de tâches. 
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.
 
Si vous modifiez des variables d'indexation de textes qui affectent
les index (les variables ( 
ft_min_word_len
 ,  
ft_max_word_len
  et
 
ft_stopword_file
 ), vous devez reconstruire les index  
FULLTEXT
  après avoir
faire les modifications et relancé le serveur. Pour reconstruire les index,
il est suffisant de faire une réparation  
QUICK
  :
La taille minimale des mots à indexer est définie dans la variable  
ft_min_word_len
  
de MySQL.  Syntaxe de 
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 :  
Puis, relancez le serveur et recompilez vos index  
FULLTEXT
 .| 
[mysqld]ft_min_word_len=3
 | 
La liste des mots rejetés est définie dans la variable  
ft_stopword_file
 .
 Syntaxe de 
SHOW VARIABLES
 .
Modifiez le selon vos goûts, 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
  : 
Par la ligne:| 
#define GWS_IN_USE GWS_PROB
 | 
 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%.| 
#define GWS_IN_USE GWS_FREQ
 | 
Pour changer les opérateurs utilisés pour les recherches booléennes,
modifiez la variable système  
ft_boolean_syntax
  (disponible depuis MySQL 4.0.1).
La variable peut aussi être modifiée durant le fonctionnement du serveur, mais
vous devez avoir les droits de  
SUPER
 . La recompilation des index
n'est pas possible. 
 Variables sytème du serveur  décrit les règles de définition de cette variable. Si vous utilisez spécifiquement les fonctionnalités  
IN BOOLEAN MODE
 , si vous
mettez à jour depuis MySQL 3.23 vers 4.0 ou plus récent, il est nécessaire de remplacer
aussi les entêtes des index. Pour cela, utilisez l'opération de réparation  
USE_FRM
  :| 
mysql> REPAIR TABLE tbl_name QUICK;
 | 
 C'est nécessaire, car les recherches booléennes en texte plein requièrent
une option dans l'entête qui n'était pas présente en MySQL en version 3.23, 
et elle n'est pas ajoutée si vous faites une réparation de type  
QUICK
 . 
Si vous tentez une recherche booléenne sans reconstruire l'index comme
ceci, la recherche retournera des résultats incorrects.| 
mysql> REPAIR TABLE nom_de_table USE_FRM;
 | 
 
Notez que si vous utilisez  
myisamchk
  pour effectuer une opération qui modifie
les index de la table, pour une réparation ou une analyse, les index  
FULLTEXT
 
sont reconstruits en utilisant la configuration par défaut des index
en texte plein, à moins que vous ne les spécifiez autrement. Cela peut
conduire à des requêtes qui échouent.
Le problème survient car les valeurs de cette configuration n'est connue
que du serveur. Elles ne sont pas stockées dans les fichiers d'index  
MyISAM
 . 
Pour éviter ce problème si vous avez modifié la taille minimale ou maximale des mots,
ou encore le fichier de mots interdits, spécifiez les options 
 
ft_min_word_len
 ,  
ft_max_word_len
  et  
ft_stopword_file
  à 
 
myisamchk
 , en donnant les mêmes valeurs que pour  
mysqld
 . Par
exemple, si vous avez donnez une taille minimale de mot de 3, vous pouvez
réparer votre table avec  
myisamchk
  : Pour vous assurer que le serveur et  
myisamchk
  utilisent les mêmes valeurs
pour les index, vous pouvez les placer dan s les sections  
[mysqld]
 
et  
[myisamchk]
  du fichier d'options :| 
shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI
 | 
 Une alternative à l'utilisation de  
myisamchk
  est l'utilisation de 
 
REPAIR TABLE
 ,  
ANALYZE TABLE
 ,  
OPTIMIZE TABLE
  ou  
ALTER TABLE
 .
Ces commandes sont effectuées par le serveur, qui connaît la configuration
des index en texte plein.| 
[mysqld]ft_min_word_len=3
 
 [myisamchk]
 ft_min_word_len=3
 | 
 |