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

Como obtener palabras en una consulta

Estas en el tema de Como obtener palabras en una consulta en el foro de Mysql en Foros del Web. Buenas tengo una tabla en la bd con los titulos de unas noticias. Ejemplo: 1. El presidente hugo chavez esta enfermo. 2. River PLante perdio ...
  #1 (permalink)  
Antiguo 27/12/2011, 15:57
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Como obtener palabras en una consulta

Buenas

tengo una tabla en la bd con los titulos de unas noticias. Ejemplo:

1. El presidente hugo chavez esta enfermo.
2. River PLante perdio el partido de la final
3. La presentación dl nuevo Sistema operativo fue un fracaso.


tengo una consutla como esta.

select titulo from noticias where titulo like '%pre%';

efectivamente me devuelve los titulos 1 y 3 pero necesito que solo m devuelva las palabras que contienen las letras enviadas osea necesitaria que me devolviera

Presidente
Presentacion


¿Como hago esto?¿gracias?
  #2 (permalink)  
Antiguo 27/12/2011, 16:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como obtener palabras en una consulta

Imposible con un patrón tan pequeño. El porcentaje de coincidencias es demasiado elevado con un patrón semejante. Por esa misma razón los índices FULLTEXT no permiten trabajar con palabras con menos de cinco caracteres para obtener resultados fiables y si le pasas menos simplemente ignoran el patrón.
No puedes hacer magia. Estas cosas se resuelven estadísticamente, por lo cual lo único que te queda es obligar al usuario a ingresar una palabra con una longitud mínima o rechazarla de plano.
¿Nunca observaste que algunos motores de búsqueda te advierten cuando metes menos caracteres, que los resultados no serán confiables?
Bueno, es por eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/12/2011, 17:13
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: Como obtener palabras en una consulta

Gracias por su respuesta!

bueno y si enviara los 5 caracteres o mas que me dice "osea si envio presid" como hago para que la consulta me devuelva unicamente la palabra que coincide y no todo el titulo completo?

En este caso me devuelva presidente.

Saludos,
  #4 (permalink)  
Antiguo 27/12/2011, 17:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como obtener palabras en una consulta

El sentido de tener una longitud mínima es precisamente evitar coincidencias exageradas. Mientras más letras tenga para comparar, más precisa es una búsqueda. Es tan simple como eso.
Si analizas bien lo que te estoy diciendo, y miras con cuidado tu propio ejemplo, notarás que al poner "presi" como patrón únicamente devolvería el primer resultado, pero no los otros dos. Luego, si lo que necesitas es buscar una palabra con mejores determinaciones, simplemente tienes que usar expresiones regulares para afinar la búsqueda.
Trata de leer sobre el tema de búsquedas de texto completo, y comparación de cadenas:
Coincidencia de patrones
Funciones de comparación de cadenas de caracteres

Trata de seguir los ejemplos que hay en el manual y en los tutoriales para que lo comprendas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: palabras, select, tabla
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 03:29.