Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/12/2006, 07:16
chiwuan
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años, 11 meses
Puntos: 0
¿Como hacer un buscador con expresiones regulares (REGEXP)?

Hola a todos,

Estoy cambiando la forma en que tengo programado un buscador. Actualmente utilizo muchas sentencias 'LIKE' unidas con AND, del tipo:

SELECT * FROM negocios WHERE oficio LIKE "%equipo%" AND oficio LIKE "%computo%"

Asi, si busco las palabras 'equipo' y 'computo', me aparecen los resultados que incluyen ambas palabras, y no cualquiera de ellas.

Sin embargo, quisiera saber si existe manera de agrupar esta forma de buscar utilizando expresiones regulares. Al inicio pensé que usando este query:

SELECT * FROM negocios WHERE oficio RLIKE "equipo|computo"

hacia lo mismo que el otro y en menos espacio, pero el problema es que la búsqueda anterior me entrega los registros que contengan la palabra 'equipo' O aquellos que contengan la palabra 'computo'. Mi problema es que quiero la intersección, no la unión.

También crei que usando un mínimo de ocurrencias en la expresión regular conseguiría el resultado buscado. Es decir, hacer que si busco 2 palabras, aparezcan al menos 2 ocurrencias de dichas palabras, algo así:

SELECT * FROM negocios WHERE oficio RLIKE "(equipo|computo){2,}"

pero este query no me funciona tampoco :(

A lo mejor pido lo imposible, pero quiero ser capaz de buscar 'n' palabras con un solo RLIKE y que los resultados sean intersecciones de la busqueda individual de las palabras.

¿Alguien sabe si lo que quiero es posible?

Gracias y saludos,