Configuration
La recherche
pleine texte existe dans MySql depuis la version 3.23.23. Elle a connut
une nette amélioration avec la version 4. Par défaut il ne nécessite
pratiquement pas d’administration.
En effet seul
les versions 4.0.10 et supérieur de MySql permettent de contrôler le
comportement de la recherche textuelle. Cinq variables sont à la disposition
de l’administrateur.
ft_boolean_syntax |
Opérateur
autorisé pour une recherche en mode booléen. |
ft_min_word_len |
Taille
minimum des mots indexés, par défaut 4 char |
ft_max_word_len |
Taille
maximum des mots indexés, par défaut 254 char |
ft_max_word_len_for_sort |
Définit
la taille maximum des mots à indexer lors des opérations de réparation
d’index. |
ft_stopword_file |
Fichier
listant les mots à ne pas indexer (articles, propositions,…),
à placer dans le répertoire de base de MySql. Une chaîne vide permet
de ne pas utiliser de liste, ce qui n’est pas forcement conseillé. |
La modification
d’une ou plusieurs options oblige à reconstruire les index de recherche
textuelle.
La reconstruction
des index « full text » s’effectue suivant deux méthodes distinctes.
Vous pouvez supprimer l’index « full text » sur la table plus
le recréer. Soit pour des tables très importantes utiliser REPAIR
TABLE Nom de la table EXTENDED.
Enfin pour
toutes les versions de mysql supportant la recherche textuelle peut être
recompiler pour prendre en compte une liste de mot interdis personnalisée.
Cela ce fait en modifiant le fichier ‘myisam/ft_static.c’.
/* Copyright (C)
2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
*/
…
#ifdef COMPILE_STOPWORDS_IN
/* This particular stopword list was taken from SMART
distribution
ftp://ftp.cs.cornell.edu/pub/smart/smart.11.0.tar.Z
it was slightly modified to my taste, though
*/
"a",
"a's",
"able",
…
"yourself",
"yourselves",
"z",
"zero"
#endif
Pour pouvoir
ajouter ou modifier des mots dans cette liste il suffit de rajouter le
mot entre doubles cotes « "de", ».
La désactivation
de l’option de trie stoppant la recherche si un mot renvoi plus de la
moitié des lignes dans la table se fait en remplaçant l’option GWS_PROB
par GWS_FREQ sur la définition de la variable
GWS_IN_USE dans le fichier 'myisam/ftdefs.h'
ce qui demande la aussi une compilation.
/* Copyright (C)
2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB */
…
…
#define NORM_IN_USE
NORM_PIVOT
#define GWS_IN_USE
GWS_PROB
/*==============================================================*/
#define LWS_TF
(count)
#define LWS_BINARY (count>0)
…
De même il
est possible de modifier la limite supérieure de la taille des mots à
indexer. Dans 'myisam/fulltext.h' modifier
la définition suivante « #define HA_FT_MAXLEN 254 ».
|