Успях да открия проблема и поправката.
Настройката за пълнотекстово търсене беше добра, тъй като исках да търся с alt east 2 думи и имах ft_min_word_len = 2
Сега, докато правех повече тестове, открих, че произволно търси няколко думи от 2 знака и игнорира други.
Ето един пример
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)
Но следното работи
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title | body |
+----+-------------------+-------------------------------------+
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+
Значи е нещо друго и очевидно е намерен ft_stopword_file
който има списък с думи и не прави нищо, ако се извърши търсене с някоя от тях.
Списъкът е тук http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html
Така че в този случай да разрешите всяко търсене на дума с дължина най-малко 2 знака
- Задайте ft_min_word_len на 2
- След това в конфигурационния файл на mysql за debian /etc/mysql/my.cnf добавете ft_stopword_file='path/to/stopword_file.txt'
- Можем да оставим този файл празен, ако е необходимо.
О, още нещо, след като направим горните настройки, трябва да рестартираме mysql и ако променим ft_min_word_len
тогава трябва да изградим отново индекса или да поправим таблицата.