Foros del Web » Programando para Internet » PHP »

Busqueda en una base de datos al estilo google ..

Estas en el tema de Busqueda en una base de datos al estilo google .. en el foro de PHP en Foros del Web. Buenas amigos programadores .. en esta ocacion les escribo porque me a venido a la mente, que mi buscador de productos en mi web realice ...
  #1 (permalink)  
Antiguo 21/09/2008, 01:32
Avatar de starmark  
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Busqueda en una base de datos al estilo google ..

Buenas amigos programadores .. en esta ocacion les escribo porque me a venido a la mente, que mi buscador de productos en mi web realice una busqueda en la Base de datos al estilo de google .. Como es esto ? ...

Bueno, actualmente los usuarios en la web realizan busquedas y funciona perfectamente perooooo .... Quisiera que la busqueda sea un poco mas avanzada es decir,

Si el usuario ingresa en el buscador "guitarra electrica" ..

Perfecto la funcion busca en la base de datos cualkier registro dond la descripcion del producto coincida con esa cadena pero tiene que ser exactamente la cadena, algunos resultados que encontraria con esa cadena serian;

1. "Guitarra electrica" gibson bla bla ..
2. Cuerdas para "Guitarra electrica" peavy modelo bla bla ..
3. Amplificador peavy para "Guitarra electrica" bla bla

Resultados que no encontraria serian;

1. Set cuerdas para guitar electrica ..
2. Amplificador para guitarras electricas ..

Es decir busca es exactamente la cadena ..

Y ESTA ES MI PREGUNTA ..

Como puedo hacer para que me arroje resultados como lo hace google (entre muchos otros) ?

El arroja todos los resultados donde encuentre aunque sea una de las palabras ingresadas por los usuarios,

Ejemplo; que los usuarios coloquen en el buscador

"Guitarra amplificador electrica bajo"

y este devuelva todos los resultados que coincidan con cada palabra ..

Google y me imagino que muchisimossss mas lo hacen, y si lo hacen ellos me imagino que es posible xD : :

Y es que habra algo que sea imposible de hacer en el mundo de los sistemas informaticos ? *-)

Bueno Espero que me puedan ayudar .. Saludos

Última edición por starmark; 21/09/2008 a las 01:38
  #2 (permalink)  
Antiguo 21/09/2008, 11:47
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Busqueda en una base de datos al estilo google ..

Facil.
Divide la cadena que el usuario pone en el campo de texto.

Y haz tu consulta dependiendo de el numero de elementos en la cadena ETC.

Un ejemplo si ponen 2 palabras:
SELECT DISTINCT * FROM articles WHERE ((title LIKE '%table%' OR subtitle LIKE '%table%' OR content LIKE '%table%') OR (title LIKE '%form%' OR subtitle LIKE '%form%' OR content LIKE '%form%')) ORDER BY id DESC

Para que si ponen guitarra, y tambien aparezca guitarra...
Activa la extension php_stem.dll en tu php.ini.
Y a cada palabra antes de buscarla haces:
$palabra = stem_spanish("palabra");
  #3 (permalink)  
Antiguo 21/09/2008, 21:05
Avatar de starmark  
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Busqueda en una base de datos al estilo google ..

ah ok muy bien gracias .. por tu respuesta .. habia pensado lo de dividir la cadena pero no estaba claro .. Gracias .. saludos
  #4 (permalink)  
Antiguo 29/09/2008, 12:20
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 11 meses
Puntos: 6
Exclamación Respuesta: Busqueda en una base de datos al estilo google ..

Hola, yo tambien estoy en la misma.
Quiero diferenciar cuando ponen una frase con comillas y cuando no, o cuando lo hacen combinado, tiro estos ejemplos en mi posible busqueda

Ford
"Ford Focus"
Ford Focus
"Ford Focus"+gris

Pero tambien tengo que ver que no escriban mal, por ej:
"Ford Focus
Ford Focus" + gris

Me imagino que para hacer esto tengo que utilizar regex, pero no encontre un ejemplo para este caso.

Algun codigo de ayuda?
Gracias!
__________________
"Vivir....solo cuesta Vida"
  #5 (permalink)  
Antiguo 29/09/2008, 12:37
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Busqueda en una base de datos al estilo google ..

Pero no seria mas efectivo agregar atras y adelante el % y cambiar los espacios por %... Asi la consulta quedaria algo como:
Código:
SELECT * FROM registros WHERE UPPER(nombre) LIKE UPPER('%Guitarra%') OR UPPER(nombre) LIKE UPPER('%Electrica%')
Suerte!

Sip... me falto info...
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 29/09/2008 a las 18:05
  #6 (permalink)  
Antiguo 29/09/2008, 15:40
 
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Respuesta: Busqueda en una base de datos al estilo google ..

Marvin:

Me parece que con lo que vos decís solo va a aparecer solo si contienen ambos:guitarra y electrica

Lalogroz:

Bastaría con no separar lo que está entre comillas, el caso del + sería lo mismo que un espacio. Ahora si uno quiere poder hacer algo como "guitarras electricas" -"fender" o sea que no contengas la palagra "fender" pues se pone más dificil, no? Ni hablar si hay paréntesis.

Las expresiones regulares podrían ayudar un poco tal vez. Pero me suena a que hay que hacerse un pequeño parser. (a no ser que haya por algún lado alguna clase)

saludos
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 10:58.