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

Buscar cualquier palabra

Estas en el tema de Buscar cualquier palabra en el foro de Mysql en Foros del Web. Hola, tengo un buscador en mi web, pero por lo que estoy viendo con las búsquedas que hacen pocas veces escriben bien las palabras. Quería ...
  #1 (permalink)  
Antiguo 20/06/2009, 11:26
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Buscar cualquier palabra

Hola, tengo un buscador en mi web, pero por lo que estoy viendo con las búsquedas que hacen pocas veces escriben bien las palabras.

Quería hacer una consulta menos exacta. Ahora mismo tengo esta:

Código:
SELECT * FROM xxxx WHERE xxxx LIKE '%$texto%' ORDER BY...
Me explico. Por ejemplo si buscan Final Fantaci, que busque por las dos palabras para que pueda encontrar Final Fantasy.

No se si se puede con una simple consulta, pero vamos... verlo lo he visto en muchas webs.

Espero haberme explicado bien. Un saludo, y gracias de antemano!!
  #2 (permalink)  
Antiguo 20/06/2009, 14:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Buscar cualquier palabra

Mira esto
http://dev.mysql.com/doc/refman/5.0/...xt-search.html

Debes tener tipo de tabla myisam para este tipo de busquedas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 21/06/2009, 03:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Buscar cualquier palabra

manolo_manolo, no sé si te refieres a algo como lo que hace la función SOUNDEX(). Lo que te propone huesos52 encontraría Final Fantasy porque Final está bien, pero si escribes sólo Fantaci no encontraría nada. Para los errores propios de una escritura rápida o una escritura fonética, con erratas o faltas de ortografía, etc., mira este hilo:
http://www.forosdelweb.com/f86/como-usa-soundex-598415/

Y luego, si te interesa, investiga las otras funciones; si trabajas en PHP, metaphone podría servirte, aunque, como te digo, SOUNDEX() también hace bien el trabajo para el inglés. Mira en wikipedia sobre dichas funciones.

Última edición por jurena; 21/06/2009 a las 04:25
  #4 (permalink)  
Antiguo 21/06/2009, 15:48
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Buscar cualquier palabra

Hola, gracias a los dos por las respuestas.

He probado con la función SOUNDEX(), pero me sigue funcionando igual. Lo que leí que toma por ejemplo la B y la V por igual. Pero no me funciona. Sigo teniendo que escribir la palabra exacta.

Y bien, me he leído el articulo completo sobre Full-Text, pero la verdad, tengo conocimientos muy básicos en sql y no me he enterado de mucho...

Hay alguna solución un poco más simple? Qué hago mal con el Soundex??

Si no, gracias igualmente!!
  #5 (permalink)  
Antiguo 21/06/2009, 16:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Buscar cualquier palabra

mira esto
http://www.madirish.net/?article=85

Hay algunos ejemplos.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 22/06/2009, 00:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Buscar cualquier palabra

Lee lo que te dice huesos52 y dinos cómo lo estás haciendo tú

Mira el resultado de esto
SELECT soundex('Final Fantacy'), soundex('Final Fantasi')
Imaginemos que buscas que buscas en una tabla juegos en la que en el campo titulo aparece escrito Final Fantacy, y quien busca escribe Final Fantasi.

Lo tendrías que buscar así
SELECT titulo FROM juegos WHERE SOUNDEX(titulo)= SOUNDEX('Final Fantasi')

Esto por lo que se refiere a SOUNDEX().

Última edición por jurena; 22/06/2009 a las 01:14
  #7 (permalink)  
Antiguo 25/06/2009, 18:21
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Buscar cualquier palabra

Gracias a los dos, me funciona perfecto.

Pero también, bueno en un principio, queria que buscara cualquier palabra. por eso puse lo de final fantaci para que encontrara final fantasy.

Ejemplo: Si buscan Michael Jackson. Que la consulta encuentre Michael y Jackson.
Osea, si la tabla fuera de cantantes mostraría también a Janet Jackson, Michael Buble, etc...

Gracias de nuevo y disculparme por ser tan pesado.
  #8 (permalink)  
Antiguo 28/06/2009, 16:27
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Buscar cualquier palabra

Alguien tiene idea???

Helpmeee
  #9 (permalink)  
Antiguo 28/06/2009, 23:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Buscar cualquier palabra

La propuesta de huesos52, FullText, te vale para eso que quieres, buscar una palabra u otra, o las dos, ordenando por orden de relevancia, primero las dos en el orden en que las buscaste. Pero este tipo de índice sólo se usa con tablas MyIsam. Echa un vistazo al índice que te recomendó en su primer post.
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 11:00.