una texto parte palabra otra hacer exacta dentro comparar coincidencias cadenas cadena busquedas busqueda buscar mysql search numbers match-against

texto - Mysql busca cadenas y números usando MATCH() CONTRA()



comparar cadenas en mysql (1)

Tengo un problema con la función MATCH AGAINST.

La siguiente consulta me da el mismo resultado:

SELECT * FROM models MATCH(name) AGAINST(''Fiat 500'') SELECT * FROM models MATCH(name) AGAINST(''Fiat'')

¿Cómo puedo buscar cadenas y números en una columna de una tabla de texto completo?

Gracias


Si necesita Fiat y 500 cualquier lugar donde el orden no importe, entonces

SELECT * FROM models MATCH(name) AGAINST(''+Fiat +500'');

Si necesita Fiat 500 juntos, entonces

SELECT * FROM models MATCH(name) AGAINST(''+"Fiat 500"'');

Si necesita Fiat y cero o más 500 , entonces

SELECT * FROM models MATCH(name) AGAINST(''+Fiat 500'');

Si necesita 500 y cero o más Fiat , entonces

SELECT * FROM models MATCH(name) AGAINST(''Fiat +500'');

Darle una oportunidad !!!

ACTUALIZACIÓN 2013-01-28 18:28 EDT

Estas son las configuraciones predeterminadas para la búsqueda 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>

Tenga en cuenta que ft_min_word_len es 4 por defecto. El token 500 tiene una longitud 3. por lo tanto, 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: reindexe todos los índices en la tabla de models

Simplemente puede soltar y agregar el índice FULLTEXT

o hazlo por etapas y observa qué tan grande será por adelantado

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 de que esto funcionó, ejecute

DROP TABLE models_old;

Darle una oportunidad !!!