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

Problemas con búsquedas avanzadas

Estas en el tema de Problemas con búsquedas avanzadas en el foro de Mysql en Foros del Web. Hola a todos, una vez mas acudiendo a la sabiduría de todos. Resulta que estoy diseñado y programando un web, y el mismo tiene un ...
  #1 (permalink)  
Antiguo 05/09/2009, 15:34
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Exclamación Problemas con búsquedas avanzadas

Hola a todos, una vez mas acudiendo a la sabiduría de todos.

Resulta que estoy diseñado y programando un web, y el mismo tiene un buscado "avanzado", el mismo comprueba las palabras del FORM, si es solo una palabra uso un LIKE en mi SELECT, y si son varias palabras uso MATCH - AGAINST. En mi tabla de empresas tengo entre otros 3 campos, llamados NOMBRE, PRODUCTOS y OBSERVACION, y a los mismos en la base de datos le apliqué lo siguiente:

CREATE FULLTEXT INDEX observacion_productos_nombre ON empresas(observacion,productos,nombre)

Esto para que mi buscador con MATCH AGAINST funcione ok, hasta ahí todo bien. Por ejemplo, hago pruebas localmente y el algorito de MATCH AGAINST funciona de MARAVILLAS. Ahora bien, subí el web esta tarde para comenzar a hacer pruebas ONLINE y resulta que el buscador no funciona, NO DA ERROR alguno, pero simplemente no encuentra resultados, por poner un ejemplo, en el campo de observaciones una de las empresas tiene "Publicidad por Internet", y en mi buscado pongo exactamente la misma frase y no muestra resultados, siendo que haciendo esto mismo en mi localhost funciona perfectamente. Por otra parte, el buscado con LIKE con una sola palabra funciona de maravillas arriba en el server, en fin, en la tabla de arriba puse las propiedades de FULLTEXT a estos campos, de la misma forma que hice en mi localhost, pero sigo sin poder hacer funcionar mi buscador. Esta es la línea de mi miscador:

$conta = "SELECT * , MATCH (productos,observacion,nombre) AGAINST ('$busqueda') AS Score FROM empresas WHERE MATCH (productos,observacion,nombre) AGAINST ('$busqueda') ORDER BY Score ASC" ;

y en mi base de datos tengo esto:
Nombre de la clave Tipo Cardinalidad Acción Campo
PRIMARY PRIMARY 1 Editar Eliminar id_empresa
productos_observacion_nombre FULLTEXT Ninguna Editar Eliminar

Creo que es mas bien un tema de MySQL, pero quizá por acá me puedan dar una mano .. desde ya GRACIAS !!!
  #2 (permalink)  
Antiguo 05/09/2009, 18:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas con búsquedas avanzadas

En esta pagina mira lo que dice sobre las caracteristicas de usar MATCH, AGAINST

Cita:
Características:
Las búsquedas FullText tienes varias características interesantes.
El límite del 50%
Cuando una consulta se encuentra en mas del 50% de los registros de la tabla esto hace que la consulta sea invalida. Por que? Pues por que al estar en mas de la mitad de los registros los resultados ya dejan de ser información relevante. Por ejemplo supongamos que tenemos una tabla con 10000 registros, realizamos la búsqueda y esta devuelve como resultado 6000 registros, esto no me sirve de nada por que no voy a revisar 6000 registros para encontrar lo que necesito mientras que si el resultado son 20 registros significa que ha encontrado exactamente lo que busco.
Palabras de menos de 3 caracteres no se buscan
Esto debido a que estas palabras son muy comunes, por ejemplo que pasaría si buscamos “a” me devolvería prácticamente todos los registros de la tabla con lo cual deja de ser información útil.
La búsqueda es Case-Insensitive
Esto por que si se busca “Cable” buscara cable, cAble, cABle, etc.
Tambien veo que falta indicar IN BOOLEAN MODE. Trata de ver si así te funciona.
Código PHP:
Ver original
  1. $conta = "SELECT * , MATCH (productos,observacion,nombre) AGAINST ('$busqueda') AS Score FROM empresas WHERE MATCH (productos,observacion,nombre) AGAINST ('$busqueda'  IN BOOLEAN MODE) ORDER BY Score ASC" ;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 05/09/2009, 23:14
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Respuesta: Problemas con búsquedas avanzadas

GRACIAS abimaelrc !!!!

Leyendo lo que citaste, veo que en realidad la búsqueda funcionaba [pese a que faltaba el IN BOOLEAN MODE]. Sucede que estaba haciendo las pruebas ONLINE con una sola Empresa en mi base de datos, y se cumple la regla de que los resultados superaban el 50%, pues tenía una sola empresa, la encontraba pero no me la mostraba en los resultados pues era el 100% de mis registros esa sola empresa ,,, PLOP !!!!! Gracias ... cargué otras Empresas y funciona 100% .. además le agregué el IN BOOLEAN MODE que ya se para que se usa ... gracias !!!!!!
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 23:32.