Om du behöver Fiat
och 500
var som helst där ordning inte spelar någon roll, då
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Om du behöver Fiat 500
tillsammans, då
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Om du behöver Fiat
och noll eller mer 500
, sedan
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Om du behöver 500
och noll eller mer Fiat
, sedan
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Ge det ett försök !!!
UPPDATERING 2013-01-28 18:28 EDT
Här är standardinställningarna för sökning i 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>
Lägg märke till att ft_min_word_len> är 4 som standard. Token 500 är längd 3. Därför kommer den inte att indexeras alls. Du måste göra tre(3) saker:
STEG 01:Konfigurera för mindre strängtokens
Lägg till detta i /etc/my.cnf
[mysqld]
ft_min_word_len = 1
STEG 02:Starta om mysql
service mysql restart
STEG 03:Indexera om alla index i models
tabell
Du kan bara släppa och lägga till FULLTEXT-indexet
eller gör det i etapper och se hur stort det blir i förväg
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;
När du är nöjd med att detta fungerade, kör sedan
DROP TABLE models_old;
Ge det ett försök !!!