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

Duda sobre Fulltext y busqueda estricta

Estas en el tema de Duda sobre Fulltext y busqueda estricta en el foro de Mysql en Foros del Web. Muy buenas Tengo una duda mas que un problema en si mismo... Resulta que estoy programando un buscador de lugares del mundo, y me llega ...
  #1 (permalink)  
Antiguo 03/07/2012, 10:09
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Busqueda Duda sobre Fulltext y busqueda estricta

Muy buenas

Tengo una duda mas que un problema en si mismo...

Resulta que estoy programando un buscador de lugares del mundo, y me llega esta duda.

Yo estoy usando el metodo Fulltext con el MATCH AGAINST del MySQL junto a PHP, de la siguiente manera:

Código SQL:
Ver original
  1. SELECT * FROM lugares WHERE MATCH (patron) AGAINST ('$PATRON' IN BOOLEAN MODE) ORDER BY id DESC

Digamos, todo funciona BIEN, hasta cierto punto.

Yo queria en realidad, que si la persona busca por ejemplo la palabra "RIO" le muestre tanto RIO de Janeiro como RIO RHIN, asi mismo si buscara ISLA, le aparecieran todos los que tengan "ISLA" como palabra.

Pero en caso de buscar "Rio de Janeiro", lo encuentra, pero tambien me muestra Rio Rhin y demas que contengan RIO, en ese caso me gustaria que cuando la persona busque un destino exacto, me muestre ese y solo ese, es posible hacer esto? Y en tal caso, como deberia adaptar mi consulta?

Muchas gracias anticipadas por su tiempo y molesta. Saludos !
__________________
CabaSoft Networks

Última edición por nicolyto77; 03/07/2012 a las 10:15 Razón: Highlight en SQL
  #2 (permalink)  
Antiguo 03/07/2012, 11:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda sobre Fulltext y busqueda estricta

Hola nicolyto77:

El uso de IN BOOLEAN MODE te permite crear expresiones de búsquedas más acordes a lo que necesitas. Si observas en la documentación aparece esto:

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

Cita:
Los siguientes ejemplos demuestran algunas cadenas de búsqueda que usan operadores booleanos full-text:

'apple banana'

Encuentra registros que contengan al menos una de las dos palabras.

'+apple +juice'

Encuentra registros que contengan ambas palabras.
en otras palabras, al utilizar frases compuestas SIN COLOCAR OPERADORES (+) Y
(-) estás diciendo que puede contener cualquiera de las palabras... en el caso de "Rio de Janeiro" la palabra RIO aplica para ambos registros...

En todo caso, si quieres búsquedas exactas podrías hacer algo como esto:

Código:
AGAINST ('+Rio +de +Janeiro' IN BOOLEAN MODE)
Es decir, forzar a que el registro contenga TODAS LAS PALABRAS QUE SE INCLUYAN EN LA BÚSQUEDA. Sin embargo, considera con esto estás quitando flexibilidad, así si por ejemplo pusieras '+Rio +Rin' es decir, con una falta de ortografía, no te arrojará resultados...

Saludos
Leo.
  #3 (permalink)  
Antiguo 03/07/2012, 16:39
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Respuesta: Duda sobre Fulltext y busqueda estricta

Muchas gracias por tu ayuda!

Me fue muy util, habia leido del comando, pero me vino la duda, de como aplicarle el parametro a todos los criterios, ya que erroneamente use el

Código SQL:
Ver original
  1. SELECT * FROM lugares WHERE MATCH (patron) AGAINST ('+$PATRON' IN BOOLEAN MODE) ORDER BY id DESC

Pero me agrego solo a la primer palabra el + y no me funciono... Luego vi la consulta con un print(); y la dejaba en

AGAINST ('+rio de janeiro') ORDER BY ...

Me podrias dar una mano, entiendo lo que me decis al final, de la falta de flexibilidad con esto, pero es que necesito que funciona de esa forma.


EDITO

Ya lo pude conseguir, no te robo mas tiempo ! Ya funciona como yo queria, tenias razon, va perfecto con los + del BOOLEAN MODE!

Gracias nuevamente por tu tiempo
__________________
CabaSoft Networks

Última edición por nicolyto77; 03/07/2012 a las 16:52 Razón: Me respondo yo mismo

Etiquetas: fulltext, buscadores
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 06:54.