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

Buscador de palabras clave

Estas en el tema de Buscador de palabras clave en el foro de Bases de Datos General en Foros del Web. Hola, tengo una aplicación en PHP (de motor) en la que quiero hacer un buscador de palabras clave, pero no encuentro la manera de hacerlo. ...
  #1 (permalink)  
Antiguo 14/07/2008, 02:07
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Buscador de palabras clave

Hola,

tengo una aplicación en PHP (de motor) en la que quiero hacer un buscador de palabras clave, pero no encuentro la manera de hacerlo.

La forma en la que estoy guardando las palabras en la base de datos es en una tabla aparte, con los campos "palabra_id","vehiculo_id" y "palabra_clave".

El vehiculo_id apunta a cada vehículo como es lógico, el tema es que al hacer la consulta si pongo "palabra_clave='rojo' AND palabra_clave='potente',etc" no hace la búsqueda, y no encuentro la manera de hacerlo.

Quiero mostrar todos los vehiculo_id que contengan todas las palabras clave (máximo 10), como debería ser la consulta? O alguna función para hacer esto?

Gracias!
  #2 (permalink)  
Antiguo 14/07/2008, 02:32
 
Fecha de Ingreso: agosto-2004
Ubicación: Lugo
Mensajes: 15
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Buscador de palabras clave

no entiendo muy bien lo que quieres


no deberias utilizar = sino que like por ejemplo

Cita:
where nombre like 'jua%'
Esto devolveria todas las palabras que empiezan por jua, es decir por ejemplo juan

Cita:
where nombre like '%jua%'
Esto devolveria todas las palabras que llevan jua
  #3 (permalink)  
Antiguo 14/07/2008, 02:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Buscador de palabras clave

¿tienes una palabra clave por registro? Supongo que si, por eso el AND no te va a funcionar. Porque un mismo registro no va a tener a la vez el valor 'rojo' y el valor 'potente', solo uno de los 2.

Una solucion seria usar GROUP BY para agrupar por el id_vehiculo, y contar el numero de registros por id_vehiculo que coinciden, algo como

SELECT id_vehiculo, count(id_vehiculo) FROM tabla WHERE palabra_clave='rojo' OR palabra_clave='potente' GROUP BY id_vehiculo HAVING count(id_vehiculo)=2

En el having en lugar de 2 pones el numero de palabras clave que estas buscando, y en el where un OR de todas las palabras clave que estas buscando.
  #4 (permalink)  
Antiguo 14/07/2008, 05:11
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Buscador de palabras clave

Hola lugointernet, gracias pero no tiene nada que ver con el LIKE, es más bien lo que dice DarkJ.

DarkJ eso es, un registro por cada palabra, voy a probar lo que me dices a ver si es lo que busco, gracias!
  #5 (permalink)  
Antiguo 14/07/2008, 06:01
Avatar de Wallack  
Fecha de Ingreso: diciembre-2006
Ubicación: España / Santander
Mensajes: 61
Antigüedad: 17 años, 4 meses
Puntos: 2
Respuesta: Buscador de palabras clave

Efectivamente tiene que ser lo que dice Darkj, si tienes una palabra clave por registro y buscas todos los registros que tengan 2 palabras clave nunca encontrarás ninguno, porque, precisamente tienen solo una palabra clave.

Darkj te ha dado una muy buena respuesta, pruébalo y nos cuentas!

Un saludo.
  #6 (permalink)  
Antiguo 14/07/2008, 11:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Buscador de palabras clave

Tema trasladado a Bases de Datos.
  #7 (permalink)  
Antiguo 17/07/2008, 01:58
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Buscador de palabras clave

Gracias DarkJ! Parece que funciona como quería.
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 01:12.