Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2011, 18:11
diego quinteros
 
Fecha de Ingreso: octubre-2006
Ubicación: The Far West, Buenos Aires
Mensajes: 262
Antigüedad: 18 años
Puntos: 28
Pregunta Buscador PHP & MySQL con Mayúsculas & Minúsculas

Hola muchacho/as...

Estoy intentando desarrollar un buscador con 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...

Según leí por ahí la codificación debe ser utf8_bin (porque en binario A y a son
números distintos)

El CREATE de mi tabla respeta este criterio:


Código MySQL:
Ver original
  1. CREATE TABLE`xxxxxxxx` (
  2.  `product_id` int(11) NOT NULL auto_increment,
  3.  `language_id` int(11) NOT NULL,
  4.  `name` varchar(255) collate utf8_bin NOT NULL,
  5.  `meta_keywords` varchar(255) collate utf8_bin NOT NULL,
  6.  `meta_description` varchar(255) collate utf8_bin NOT NULL,
  7.  `description` text collate utf8_bin NOT NULL,
  8.  PRIMARY KEY  (`product_id`,`language_id`),
  9.  KEY `name` (`name`),
  10.  FULLTEXT KEY `name_2` (`name`,`meta_keywords`,`meta_description`)
  11. ) ENGINE=MyISAM AUTO_INCREMENT=155 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

Y luego mi consulta que no distingue Mayúsculas de Minúsculas:

Código MySQL:
Ver original
  1. SELECT c.product_id, c.name, c.meta_keywords, c.meta_description, e.product_id, e.model, e.image , s.category_id ,
  2. MATCH (c.name, c.meta_keywords, c.meta_description)  
  3. AGAINST ('$searchterm' IN BOOLEAN MODE ) AS Score  
  4. FROM $tDescript c
  5.  
  6. INNER JOIN $tProduct e ON c.product_id = e.product_id
  7. INNER JOIN $tCat     s ON c.product_id = s.product_id
  8.  
  9. WHERE MATCH (c.name, c.meta_keywords, c.meta_description)  
  10. AGAINST ('$searchterm' IN BOOLEAN MODE )  
  11. ORDER BY Score DESC  
  12. LIMIT 0 , 20;

También probé con _ci (case ignore) pero tampoco...

En fin, si alguien me puede echar una mano, agradecido!!!
Saludos!