Sigo con el asunto del buscador: PHP & MySQL
Un buscador de palabras o frases en un índice FULLTEXT que involucra
tres campos de mi tabla...
Funciona perfectamente, peeeeero...no distingue mayúsculas de minúsculas.
O sea que si en alguno de mis campos dice "Pepe" y yo busco "pepe", no da
ningún resultado...
¿No existe un "CASE_SENSITIVE = FALSE", y listo?
Leí mucho por ahí, y probé muchas cosas, pero nada funciona.
El CREATE de mi tabla es así:
Código MySQL :
CREATE TABLE`xxxxxxxx` ( `product_id` int(11) NOT NULL auto_increment, `language_id` int(11) NOT NULL, `name` varchar(255) collate utf8_bin NOT NULL, `meta_keywords` varchar(255) collate utf8_bin NOT NULL, `meta_description` varchar(255) collate utf8_bin NOT NULL, `description` text collate utf8_bin NOT NULL, PRIMARY KEY (`product_id`,`language_id`), KEY `name` (`name`), FULLTEXT KEY `name_2` (`name`,`meta_keywords`,`meta_description`) ) ENGINE=MyISAM AUTO_INCREMENT=155 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Leí que puede ser el CHARSET y/o el utf8_bin, etc; cambié todo y sigue dando
el mismo resultado.
Mi consulta es así:
Código MySQL :
SELECT c.product_id, c.name, c.meta_keywords, c.meta_description, e.product_id, e.model, e.image , s.category_id , MATCH (c.name, c.meta_keywords, c.meta_description) AGAINST ('$searchterm' IN BOOLEAN MODE ) AS Score FROM $tDescript c INNER JOIN $tProduct e ON c.product_id = e.product_id INNER JOIN $tCat s ON c.product_id = s.product_id WHERE MATCH (c.name, c.meta_keywords, c.meta_description) AGAINST ('$searchterm' IN BOOLEAN MODE ) ORDER BY Score DESC LIMIT 0 , 20;
Con o sin el IN BOOLEAN MODE también es igual...
En fin, puedo postear el código completo del buscador -que me parece
bastante respetable-; si alguien lo quiere, que chifle...
Salud!