Ik heb het probleem en de oplossing kunnen vinden.
De instelling voor zoeken in volledige tekst was goed omdat ik wilde zoeken met alt east 2 woorden en ik had ft_min_word_len = 2
Nu ik meer aan het testen was, ontdekte ik dat het willekeurig naar enkele woorden van 2 tekens zoekt en andere negeert.
Hier is een voorbeeld
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)
Maar het volgende werkt
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title | body |
+----+-------------------+-------------------------------------+
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+
Dus het is iets anders en blijkbaar vond het de ft_stopword_file
die een lijst met woorden heeft en niets doet als er met een van de woorden wordt gezocht.
De lijst is hier http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html
Dus in dit geval elke woordzoekopdracht met een lengte van ten minste 2 tekens toestaan
- Stel de ft_min_word_len in op 2
- Voeg vervolgens in het mysql-configuratiebestand voor debian /etc/mysql/my.cnf ft_stopword_file='path/to/stopword_file.txt' toe
- We kunnen dit bestand indien nodig leeg laten.
Oh nog iets als we de bovenstaande instellingen hebben gedaan, moeten we mysql opnieuw opstarten en als we ft_min_word_len
veranderen dan moeten we de index opnieuw opbouwen of de tabel repareren.