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

Buscador

Estas en el tema de Buscador en el foro de Bases de Datos General en Foros del Web. hola tengo que hacer un buscador, pero quiero hacerlo que no solo salgan los resultados que contengan la palabra dada, sino las parecidas... va un ...
  #1 (permalink)  
Antiguo 16/12/2009, 13:05
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 0
Buscador

hola tengo que hacer un buscador, pero quiero hacerlo que no solo salgan los resultados que contengan la palabra dada, sino las parecidas...
va un ejemplo

si yo quiero buscar una persona por nombre o apellido... y como key pongo "maria"

quiero que como resultado salga

"Maria sarasa"
"Mariano pepepe"
"Mario"

osea, no solo los que tengan mariana sino los que por mas que se hayan equivocado en una letra tambien salgan pero con una "prioridad" baja... no se si se entiende... Estoy trabajando con PHP y Mysql.

lo que encontre y probe fue http://www.desarrolloweb.com/articulos/2087.php pero el problema es que por ejeplo tengo alguien que se llama "Mariano" y pongo como clave "maria" y no me sale "mariano" no me encuentra nada...

Gracias
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #2 (permalink)  
Antiguo 16/12/2009, 14:08
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Buscador

Prueba en realizar la consulta con LIKE.

Ejemplo:

SELECT *
FROM tabla
WHERE nombre LIKE 'Maria%';

Esto te devolvería todos los nombres que empiecen con Maria y luego tengan 0 o más carácteres. Maria, Mariano, Marianico... lo que sea.

Te dejo un enlace a un tutorial por si tienes más dudas.

[URL="http://www.sql-tutorial.net/SQL-LIKE.asp"]http://www.sql-tutorial.net/SQL-LIKE.asp[/URL]
  #3 (permalink)  
Antiguo 16/12/2009, 14:13
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Buscador

si, esto lo tengo hecho en otro sitio, pero lo que quiero es que sea un poco mas inteligente, osea que si yo pongo "Maria Fernandez", que me salgan todos los que normalmente deberian de salir, y luego por ejeplo tambien salga "Mari Fernando" por ejemplo, cosa que si el usuario se equivoca en alguna letra o algo, tambien salga dependiendo de cuanto se confundio....
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #4 (permalink)  
Antiguo 16/12/2009, 14:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Buscador

Has probado algun autocomplete realizado con AJAX? Creo que sería la solución más sencilla y eficaz y no te complicarías mucho. Busca algun plugin para jQuery que hay bastantes. Si encuentras uno útil postealo para que otros se puedan aprovechar.

Y si finalmente te decides por otra solución o alguien tiene otra idea que también la comparta.

Gracias.
  #5 (permalink)  
Antiguo 17/12/2009, 09:47
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Buscador

bueno, creo que encontre mi solucion... todavia me falta probarlo bien pero hasta ahora estoy muy conforme....

http://dev.mysql.com/doc/refman/5.1/...t-boolean.html

en esta pagina esta la explicacion, para el que no sepa ingles, lo puede traducir con la herramienta de google.

la consulta quedaria algo asi...

SELECT
videos.titulo,
videos.tituloTraducido,
videos.imagenTapa,
videos.id_video,
MATCH(titulo,tituloTraducido) AGAINST ('Rey* calle*' IN BOOLEAN MODE) AS puntuacion
FROM
videos
WHERE
MATCH(titulo,tituloTraducido) AGAINST ('Rey* calle*' IN BOOLEAN MODE)
ORDER BY puntuacion DESC

con lo cual me devolveria las películas "reyes de la calle", "reyes y reynas"... y toda pelicula que tenga calle o rey como palabra de comienzo de alguna de sus palabras en el titulo o titulotraducido... la unica desventaja es que si pongo rey calle como palabra clave, la puntuacion de la pelicula "reyes de la calle" es 2, mientras que si pongo "reyes calle" la puntuacion es 1... que aún no entiendo porque... pero funciona mucho mejor, la idea es en php cuando recibo el key, hacerle un explode por espacios, y a cada parte agregarle un asterisco al final... es lo que se me ocurrio hasta ahora...
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
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:56.