Si necesitas Fiat
y 500
en cualquier lugar donde el orden no importe, entonces
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Si necesitas Fiat 500
juntos, entonces
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Si necesitas Fiat
y cero o más 500
, entonces
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Si necesitas 500
y cero o más Fiat
, entonces
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Pruébalo !!!
ACTUALIZACIÓN 2013-01-28 18:28 EDT
Esta es la configuración predeterminada para la búsqueda de TEXTO COMPLETO
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>
Tenga en cuenta que ft_min_word_len es 4 por defecto. El token 500 tiene una longitud de 3, por lo que no se indexará en absoluto. Tendrás que hacer tres (3) cosas:
PASO 01:Configurar para tokens de cadena más pequeños
Agregue esto a /etc/my.cnf
[mysqld]
ft_min_word_len = 1
PASO 02:Reiniciar mysql
service mysql restart
PASO 03:Reindexar todos los índices en los models
mesa
Simplemente puede soltar y agregar el índice FULLTEXT
o hazlo por etapas y ve qué tan grande será de antemano
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;
Cuando esté satisfecho con esto funcionó, entonces ejecute
DROP TABLE models_old;
Pruébalo !!!