Foros del Web » Programación para mayores de 30 ;) » RegExp »

Expresiones regulares y tildes

Estas en el tema de Expresiones regulares y tildes en el foro de RegExp en Foros del Web. Hola compañeros =) Tengo un problema con búsquedas a mi base de datos por culpa de los tildes. Es un buscador donde el usuario introduce ...
  #1 (permalink)  
Antiguo 03/05/2012, 07:37
Avatar de Heent  
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 10 meses
Puntos: 6
Pregunta Expresiones regulares y tildes

Hola compañeros =) Tengo un problema con búsquedas a mi base de datos por culpa de los tildes.

Es un buscador donde el usuario introduce una palabra a buscar. Entonces lo busco con un:
Código MySQL:
Ver original
  1. campo1 REGEXP 'palabra1|palabra2|palabra3'
Me funciona todo a la perfección menos cuando tengo que buscar una palabra que contenga un tilde en mi base de datos.

Es decir, yo tengo guardado "hóla" entonces el usuario quiere encontrar este hóla e introduce "hola" (sin el tilde) entonces me gustaría que me devolviera el campo con tilde.

si uso LIKE me lo devuelve correctamente con o sin tilde pero entonces se me complica más la consulta porque tengo que hacer:

Código MySQL:
Ver original
  1. campo1 LIKE 'palabra1'
  2. OR campo1 LIKE 'palabra2'
  3. OR campo1 LIKE 'palabra3'

¿no?

La cosa es, como puedo hacer una búsqueda eficiente con palabras con tile? Estuve mirando también con MATCH() AGAINST pero tenía problemas con palabras cortas entonces.


Un saludo y muchas gracias!
  #2 (permalink)  
Antiguo 03/05/2012, 15:18
Avatar de Heent  
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Expresiones regulares y tildes

He pensado que quizá con el tipo de alfabeto puedo solucionar algo pero no se muy bien como usar lo
  #3 (permalink)  
Antiguo 04/05/2012, 14:28
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Respuesta: Expresiones regulares y tildes

Hola Heent,

Es muy importante tener muy claros los conceptos al trabajar con expresiones regulares, 12.5.2. Regular Expressions. Una opción para el caso que planteas lo puedes ver en http://www.sqlfiddle.com/#!2/ccb5b/34.

Espero te sea útil.
  #4 (permalink)  
Antiguo 04/05/2012, 15:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Expresiones regulares y tildes

Creo que previo a todo esto debes decirnos que charset (si utf8) usas y collation (por ej. utf8_general_ci) para tus campos, y qué motor, si MyIsam o InnoDB. Recuerda los problemas de utf8 con Full Text y con regexp de MySQL; también la imposibilidad de usar Full Text si usas tablas MyIsam. En el caso que propones, si por ej. fuera utf8 tu charset y MyIsam tu motor, yo te recomiendo la segunda opción que tú proponías con campo1 LIKE 'palabra1'
OR campo1 LIKE 'palabra2'
OR campo1 LIKE 'palabra3'
Sé que es algo más lenta, pero te obliga a programar menos y funciona bien con utf8.
Si tu charset es Latin1 y tu motor InnoDB, yo te recomendaría Full Text, aunque, claro, pierdes palabras de menos de tres caracteres, pero para ese caso divides la programación (Pide ayuda en PhP si es tu lenguaje) y si lo que buscan tiene menos de tres caracteres, que eso lo busque con LIKE y el resto con FULL TEXT.
Todo depende de lo que tengas y lo que necesites hacer.
  #5 (permalink)  
Antiguo 05/05/2012, 11:14
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Respuesta: Expresiones regulares y tildes

Hola Heent,

La funcionalidad de Full-Text Search para InnoDB está disponible desde la versión 5.6.4 de MySQL, para MyISAM está disponible en versiones anteriores.

Etiquetas: tildes, busquedas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:33.