Als je Fiat
nodig hebt en 500
overal waar de volgorde er niet toe doet, dan
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Als je Fiat 500
nodig hebt samen, dan
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Als je Fiat
nodig hebt en nul of meer 500
, dan
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Als je 500
nodig hebt en nul of meer Fiat
, dan
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Probeer het eens !!!
UPDATE 28-01-2013 18:28 EDT
Dit zijn de standaardinstellingen voor zoeken in FULLTEXT
mysql> show variables like 'ft%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
+--------------------------+----------------+
5 rows in set (0.00 sec)
mysql>
Merk op dat ft_min_word_len is standaard 4. Het token 500 heeft lengte 3. Het wordt dus helemaal niet geïndexeerd. U moet drie (3) dingen doen:
STAP 01:Configureren voor kleinere string-tokens
Voeg dit toe aan /etc/my.cnf
[mysqld]
ft_min_word_len = 1
STAP 02:Start mysql opnieuw
service mysql restart
STAP 03 :Indexeer alle indexen in de models
opnieuw tafel
U kunt gewoon de FULLTEXT-index neerzetten en toevoegen
of doe het in fasen en kijk van tevoren hoe groot het wordt
CREATE TABLE models_new LIKE models;
ALTER TABLE models_new DROP INDEX name;
ALTER TABLE models_new ADD FULLTEXT name (name);
ALTER TABLE models_new DISABLE KEYS;
INSERT INTO models_new SELECT * FROM models;
ALTER TABLE models_new ENABLE KEYS;
ALTER TABLE models RENAME models_old;
ALTER TABLE models_new RENAME models;
Als je tevreden bent dat dit werkte, voer dan
DROP TABLE models_old;
Probeer het eens !!!