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

buscar con fulltext, match against

Estas en el tema de buscar con fulltext, match against en el foro de Mysql en Foros del Web. tengo esta consulta: SELECT * FROM sdlb_datos dat inner join sdlb_sitios sit on dat.id_sitio=sit.id WHERE MATCH (dat.descripcion,dat.keywords,dat.nombre) AGAINST ('venta de autos bahia') order by sit.id ...
  #1 (permalink)  
Antiguo 30/07/2008, 09:05
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
buscar con fulltext, match against

tengo esta consulta:

SELECT * FROM sdlb_datos dat inner join sdlb_sitios sit on dat.id_sitio=sit.id WHERE MATCH (dat.descripcion,dat.keywords,dat.nombre) AGAINST ('venta de autos bahia') order by sit.id desc, dat.nombre asc


sobre estas dos tablas:

sdlb_datos
id, id_sitio, nombre, descripcion, keywords,


con el índice "buscar" creado como FULLTEXT con los campos: descripcion, keywords, nombre

sdlb_sitios
id, url, categoria

pero la consulta me devuelve cero columnas (cuando existen esas palabras en el campo keywords...

alguna idea?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 30/07/2008, 09:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: buscar con fulltext, match against

Ariel,

la consulta está bien si has creado un índice fulltext de tres columnas y no tres índices fulltext de una columna cada uno. Lo he probado, pero debes comprobar que el número de coincidencias no supera el 50%, es decir, si estás en modo de prueba y con el fin de encontrar las palabras pones una o varias de ellas en más del 50 por ciento de los registros, no las encontrarás; tampoco se tienen en cuenta las palabras de menos de 4 caracteres, es decir, el 'de' ni te lo busca por considerar que se trata de palabras frecuentes.
Otro posible fallo sería haber hecho la prueba con menos de 6 registros. Tendrás que probar con un número superior...
Lo demás creo que está bien.
Por cierto, habrás creado el índice al principio, porque si lo has creado después de introducir los datos, tendrás que hacer un repair table nombretabla para que indexe los datos.
A ver si encuentras lo que quieres.

Última edición por jurena; 30/07/2008 a las 10:07
  #3 (permalink)  
Antiguo 30/07/2008, 12:36
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: buscar con fulltext, match against

Eh, Jurena!!! Gracias. Era que sólo habìa cargado dos registros (estoy aun en etapa de pruebas) y no sabía que debía cargar más de 6 para que funcione. Ya está funcionando de pelos!
Gracias.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 30/10/2008, 13:48
Avatar de paxita23  
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: buscar con fulltext, match against

Esa regla de mas de 6 registros para que funcione aplica solo a cadenas o tambien a numeros.... en mi BD tengo superamos esa cantidad y no me funciona al buscar numeros... alguna sugerencia.... gracias!
  #5 (permalink)  
Antiguo 30/10/2008, 14:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: buscar con fulltext, match against

paxita,
creo que los números los trata como cadena y probablemente la mayor parte de los números sean de 3 cifras, es decir, de 3 caracteres o menos: por eso no los encuentra. Ese índice Full-text está más pensado para búsqueda de cadenas de texto. Seguramente, te encontrará los números con más de 3 cifras sin problema...
  #6 (permalink)  
Antiguo 06/11/2008, 13:05
Avatar de paxita23  
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: buscar con fulltext, match against

jurena gracias!! ese debe ser problema son numeros con cifras muy cortas!!!
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 00:23.