Foros del Web » Programando para Internet » PHP »

Búsqueda con fulltext

Estas en el tema de Búsqueda con fulltext en el foro de PHP en Foros del Web. Hola, amigos del foro: Estoy desarrollando una tienda web con php/mysql y a falta de un pequeño fleco, está terminada. El problema viene a la ...
  #1 (permalink)  
Antiguo 15/03/2006, 04:40
 
Fecha de Ingreso: marzo-2006
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Búsqueda con fulltext

Hola, amigos del foro:

Estoy desarrollando una tienda web con php/mysql y a falta de un pequeño fleco, está terminada.

El problema viene a la hora de realizar la búsqueda en la tabla de artículos. Es una base de datos de unos 70.000 libros , y a la hora de realizar una búsqueda he optado por indexar la tabla y hacerla con un fulltext.

El caso es que a la hora de buscar los resultados, no sale lo bien que yo quisiera. El código es:

$prod="SELECT *, MATCH(NOMBRE) AGAINST('$nombre') AS coincidencia FROM articulos WHERE MATCH (NOMBRE) AGAINST ('$nombre IN BOOLEAN MODE') AND AUTOR LIKE '%$autor%' AND EDITORIAL LIKE '%$editorial%' AND ISBN LIKE '%$ISBN%'";

$prod .= " ORDER BY coincidencia";

Las pruebas las estoy haciendo en el dominio leeraunclic.es y el problema viene a la hora de mostrar los resultados. En teoría, si buscáramos la cadena "piedra toque" debería salir el libro "piedra de toque" pero no es asi. Sale una larga lista de titulos con las palabras o piedra o toque en su interior, e incluso muchos titulos sin coincidencia ninguna.

A ver si pudierais echarme un cable agradeciéndoos de antemano la atención por leer el mensaje.

Un saludo!
  #2 (permalink)  
Antiguo 15/03/2006, 10:03
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
si kieres una coincidencia especifica porke no pones NOMBRE='$nombre' o NOMBRE LIKE '$nombre'???
  #3 (permalink)  
Antiguo 16/03/2006, 03:27
 
Fecha de Ingreso: marzo-2006
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Pues porque la cadena que mandas a buscar tiene más de una palabra. De ahi lo de indexar la base de datos con un Fulltext.
  #4 (permalink)  
Antiguo 16/03/2006, 05:12
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,
por lo que he leido en la documentación de mySQL sobre las búsquedas full-text con el modificador IN BOOLEAN MODE (http://dev.mysql.com/doc/refman/4.1/...-boolean.html), creo que tienes un pequeño fallo en la cadena de búsqueda. Tu pones

Cita:
Iniciado por duero2
$prod="SELECT *, MATCH(NOMBRE) AGAINST('$nombre') AS coincidencia FROM articulos WHERE MATCH (NOMBRE) AGAINST ('$nombre IN BOOLEAN MODE') AND AUTOR LIKE '%$autor%' AND EDITORIAL LIKE '%$editorial%' AND ISBN LIKE '%$ISBN%'";
$prod .= " ORDER BY coincidencia";
y creo que debiera ser:
Código PHP:
$prod="SELECT *, MATCH(NOMBRE) AGAINST('$nombre') AS coincidencia FROM articulos WHERE MATCH (NOMBRE) AGAINST ('$nombre' IN BOOLEAN MODE) AND AUTOR LIKE '%$autor%' AND EDITORIAL LIKE '%$editorial%' AND ISBN LIKE '%$ISBN%'";
$prod .= " ORDER BY coincidencia"
Fijate que he movido la comilla simple de dentro del MATCH (NOMBRE) AGAINST dentro del WHERE. Prueba y dinos que tal
__________________
http://www.nosoynadie.net/
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 19:45.