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

SQL - Programación de buscador - problemas con LIKE

Estas en el tema de SQL - Programación de buscador - problemas con LIKE en el foro de Programación General en Foros del Web. Tengo un foro PHPBB en el que he capado las búsquedas internas, porque su sistema de optimización hacía que ocupara mucho en las tablas de ...
  #1 (permalink)  
Antiguo 30/10/2003, 03:41
 
Fecha de Ingreso: octubre-2003
Mensajes: 3
Antigüedad: 20 años, 7 meses
Puntos: 0
SQL - Programación de buscador - problemas con LIKE

Tengo un foro PHPBB en el que he capado las búsquedas internas, porque su sistema de optimización hacía que ocupara mucho en las tablas de la base de datos.

Por ello, he programado un buscador externo, desde otra web, para hacer búsquedas de texto en los mensajes publicados en los foros. Por el momento funciona bastante bien, pero tengo un problemilla al buscar palabras que forman parte de otras mayores:

¿Cómo puedo hacer para que al buscar una palabra, no me devuelva los resultados en los que aparece esa palabra dentro de otra?

Me explicaré mejor: si busco la palabra "rico", no quiero que me la encuentre ni en "ricos" ni en "excéntrico", por ejemplo. Sólo cuando encuentre la palaba exacta "rico" dentro del campo. Por ejemplo, en "soy un hombre rico con mucho dinero".

Ahora mismo la búsqueda la hago de este modo:

post_text LIKE '%rico%'

Pero claro, eso me devuelve las cadenas que incluyen "rico" dentro de ellas, y no es lo que quiero. Si fuerzo a que tengan espacios antes y después, de este modo:

post_text LIKE '% rico %'

no me encontraría las cadenas que comiencen o terminen con "rico" sin el espacio, por ejemplo "rico es una palabra" o "esto está muy rico".

He pensado también esta otra manera:

post_text LIKE '[ ]*rico[ ]*'

Esto es, cero o más apariciones de espacios antes y después, pero entonces si el campo contiene otros caracteres aparte de los espacios y "rico", tampoco funcionaría.

Finalmente, esta otra posibilidad:

post_text LIKE '%[ ]*rico[ ]*%'

sería equivalente a la primera...

¿Cómo hacerlo?
  #2 (permalink)  
Antiguo 30/10/2003, 18:36
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
a ver que te parece?

post_test like 'rico %' or post_test like '% rico'

en teoria funciona... claro que la performance no es la ideal, pero...
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 31/10/2003, 02:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3
Antigüedad: 20 años, 7 meses
Puntos: 0
No es suficiente...

Gracias Mickel pero eso me daría sólo los mensajes que empiezan por "rico " o terminan en " rico", pero por ejemplo no los que tengan " rico " en medio...
  #4 (permalink)  
Antiguo 31/10/2003, 11:38
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
entonces
post_test like 'rico %' or post_test like '% rico' or post_test like '% rico %'
__________________
No tengo firma ahora... :(
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 16:00.