J'ai pu trouver le problème et le correctif.
Le paramètre de recherche en texte intégral était bon car je voulais rechercher avec alt east 2 mots et j'avais ft_min_word_len = 2
Maintenant, en faisant plus de tests, j'ai trouvé qu'il cherchait au hasard quelques mots de 2 caractères et en ignorait d'autres.
Voici un exemple
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('use');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('Use');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('you');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('the');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('vs.');
Empty set (0.00 sec)
Mais les travaux suivants
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title | body |
+----+-------------------+-------------------------------------+
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+
Donc c'est autre chose et apparemment trouvé son ft_stopword_file
qui a une liste de mots et ne fait rien si une recherche se produit avec l'un d'eux.
La liste est ici http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html
Donc, dans ce cas, pour autoriser toute recherche de mots d'une longueur d'au moins 2 caractères
- Définir le ft_min_word_len sur 2
- Puis dans le fichier de configuration mysql, pour debian /etc/mysql/my.cnf ajoutez ft_stopword_file='path/to/stopword_file.txt'
- Nous pouvons laisser ce fichier vide si nécessaire.
Oh, encore une fois, une fois que nous avons défini les paramètres ci-dessus, nous devons redémarrer mysql et si nous modifions ft_min_word_len
alors nous devons reconstruire l'index ou réparer la table.