Consegui encontrar o problema e a correção.
A configuração de pesquisa de texto completo era boa, pois eu queria pesquisar com alt east 2 palavras e tinha
ft_min_word_len = 2
Agora, ao fazer mais testes, descobri que aleatoriamente pesquisa algumas palavras de 2 caracteres e ignora outras.
Aqui está um exemplo
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)
Mas o seguinte funciona
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title | body |
+----+-------------------+-------------------------------------+
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+
Então é outra coisa e aparentemente encontrou o
ft_stopword_file
que tem uma lista de palavras e não faz nada se acontecer alguma pesquisa com uma delas. A lista está aqui http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html
Portanto, neste caso, para permitir qualquer pesquisa de palavras com pelo menos 2 caracteres
- Defina ft_min_word_len como 2
- Em seguida, no arquivo de configuração do mysql, para debian /etc/mysql/my.cnf adicione ft_stopword_file='path/to/stopword_file.txt'
- Podemos deixar este arquivo em branco, se necessário.
Ah, mais uma coisa, uma vez que fazemos as configurações acima, precisamos reiniciar o mysql e se alterarmos
ft_min_word_len
então precisamos reconstruir o índice ou reparar a tabela.