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

Problema con "IN BOOLEAN MODE"

Estas en el tema de Problema con "IN BOOLEAN MODE" en el foro de Mysql en Foros del Web. Hola FDW, tengo problemas con mi buscador interno, con las búsquedas booleanas. Quería que al buscar "delfin" aparecieran resultados también de "delfines" o "delfin rosado". ...
  #1 (permalink)  
Antiguo 23/06/2012, 19:07
 
Fecha de Ingreso: junio-2010
Mensajes: 49
Antigüedad: 13 años, 10 meses
Puntos: 3
Sonrisa Problema con "IN BOOLEAN MODE"

Hola FDW, tengo problemas con mi buscador interno, con las búsquedas booleanas.

Quería que al buscar "delfin" aparecieran resultados también de "delfines" o "delfin rosado". Y hasta ahí funciona todo bien.

El problema se genera cuando quiero buscar más de 1 palabra, por ejemplo: "el animal delfín", aquí solo tiene en cuenta la primer palabra que se escribe, en este caso es "animal" y muestra todos los resultados que tengan "animal" o "animales".

¿Cómo hago para que tenga en cuenta todas las palabras?, y no solo la primera que se escribe.

Este es el código:

Código:
mysql_query("SELECT uDR.webTitulo, uDR.webDescripcion, uDR.webkeywords, uDR.weburl, SUM(uDR.priority) as SPriority
FROM (

(SELECT s1.webTitulo, s1.webDescripcion, s1.weburl, s1.webkeywords, 3 as priority FROM webs s1 WHERE MATCH (webTitulo) AGAINST ('$frase*' IN BOOLEAN MODE))

UNION

(SELECT s2.webTitulo, s2.webDescripcion, s2.weburl, s2.webkeywords, 2 as priority FROM webs s2 WHERE MATCH (webkeywords) AGAINST ('$frase*' IN BOOLEAN MODE))

UNION

(SELECT s3.webTitulo, s3.webDescripcion, s3.weburl, s3.webkeywords, 1 as priority FROM webs s3 WHERE MATCH (webDescripcion) AGAINST ('$frase*' IN BOOLEAN MODE))) uDR

GROUP BY uDR.webTitulo, uDR.weburl, uDR.webDescripcion, uDR.webkeywords

ORDER BY SPriority DESC ", $server_link) 
                         or die(mysql_error());
Salu2.
__________________
Naica enciclopedia animal
  #2 (permalink)  
Antiguo 25/06/2012, 09:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con "IN BOOLEAN MODE"

Hola Naica:

Un favor, cuando publiques alguna consulta en este foro NO INCLUYAS CÓDIGO PHP NI DE NINGÚN OTRO LENGUAJE DE PROGRAMACIÓN... pon sólo código SQL... en este caso el problema puede ser ocasionado por las variables que estás poniendo ($frase)... en lugar de postear esto, dinos como es exactamente la sentencia SQL que estás tratando de ejecutar, no nos digas cómo armas esa sentencia...

No me quedó claro cuál es el problema que estás teniendo... sería conveniente que nos pusieras qué datos que tienes en tu tabla y qué patrón es el que deseas buscar... De primera vista la consulta no tiene nada de malo, y el problema se podría atribuir más bien a la información, por eso es que pido que nos pongas los datos de ejemplo. Por lo pronto, puedes probar las siguientes opciones:

primero: Quitar la opción IN BOOLEAN MODE: ¿Realmente necesitas hacer búsquedas booleanas?. Muchos de los usuarios que he visto utilizar esta opción lo hacen para evitar el límite del 50% (si no sabes de qué estoy hablando revisar la documentación)... podrías quitar este modificador y observar el tipo de búsqueda que se realiza.

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

En su defecto, si necesitas utilizar búsquedas booleanas, entonces SÁCALE PROVECHO A LOS DISTINTOS OPERADORES... el verdadero potencial de las búsquedas booleanas es cuando utilizas estos y todos los demás operadores...
OJO, hasta donde recuerdo, el operador asterisco (*) se aplica POR PALABRA, algo distinto a los operadores (+) y (+) por lo que si no estoy equivocado tendrías que hacer algo como esto:

Código:
AGAINST ('el* animal* delfin*'  IN BOOLEAN MODE)

o 

AGAINST ('(el) +animal* +delfin*'  IN BOOLEAN MODE)
Te repito, no estoy seguro de si esto es correcto, pero es cuestión de que hagas algunas pruebas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 25/06/2012, 12:42
 
Fecha de Ingreso: junio-2010
Mensajes: 49
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Problema con "IN BOOLEAN MODE"

Perdón, ahora explico mejor como se realizan las consultas.

Cuando alguien escribe en el buscador, como por ejemplo: "delfín rosado" esta frase se guarda en la variable $frase.

Luego se evalúa si la frase se encuentra en el titulo, la descripción o las keywords y a cada uno se le asigna un puntaje que se suma para posicionar los resultados.

Las palabras no las puedo separar ya que se encuentran en $frase, por eso solo añado un *. Necesito utilizar la opción IN BOOLEAN MODE ya que si escribo la palabra en plural, como "delfines rosados" no se encuentran resultados.

Espero que puedan ayudarme, un saludo! y gracias por la respuesta
__________________
Naica enciclopedia animal

Etiquetas: boolean, select, sql
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:32.