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

[SOLUCIONADO] Problema con FULLTEXT

Estas en el tema de Problema con FULLTEXT en el foro de Mysql en Foros del Web. Hola, tengo una BD y la siguiente sentencia: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original SELECT * FROM tabla WHERE MATCH ( title ) AGAINST ( ...
  #1 (permalink)  
Antiguo 01/05/2013, 09:06
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 7 meses
Puntos: 15
Problema con FULLTEXT

Hola, tengo una BD y la siguiente sentencia:


Código PHP:
Ver original
  1. SELECT * FROM tabla WHERE MATCH (title) AGAINST ('criterio')
  2.  
  3. SELECT * FROM tabla WHERE MATCH (description) AGAINST ('criterio')

que me van bien.

Pero ésta no:

Código PHP:
Ver original
  1. SELECT * FROM tabla WHERE MATCH (title, description) AGAINST ('criterio')


Sin embargo ésta, que no sé si es muy redudante (lenta?), sí que me va:

Código PHP:
Ver original
  1. SELECT * FROM tabla WHERE MATCH (title) AGAINST ('criterio') AND MATCH (description) AGAINST ('criterio')

El tema es que la correcta (según he leido) es la que no me va pero me sale este error:

#1191 - Can't find FULLTEXT index matching the column list

La table es MyISAM y los campos están definidos como FULLTEXT ambos. Qué puede suceder? He leido en foros que no soy el único que le pasa y nadie ha dado una respuesta que resuelva el problema.
  #2 (permalink)  
Antiguo 01/05/2013, 14:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Problema con FULLTEXT

Sospecho que el problema es que no has creado el índice fulltext para los dos campos a la vez, es decir, un fulltext sobre múltiples columnas, en este caso dos. Si no lo has creado, no lo encuentra, y eso parece decirte el mensaje de error que te envía. Pero, ojo, de hacerlo, la búsqueda no sería la misma. Me explicaré.
Con esto:
SELECT * FROM tabla WHERE MATCH (title) AGAINST ('criterio')

SELECT * FROM tabla WHERE MATCH (description) AGAINST ('criterio')

y con esto
SELECT * FROM tabla WHERE MATCH (title) AGAINST ('criterio') AND MATCH (description) AGAINST ('criterio')

Te aseguras de que la palabra criterio está en ambos campos.
Con esta otra consulta, no
SELECT * FROM tabla WHERE MATCH (title, description) AGAINST ('criterio')

Pues lo que hace el programa es indexar las dos columnas como si fuera una, y bastaría que criterio se hallara en cualquiera de ellas para que te devolviera verdadero. Piensa si es eso lo que quieres.
  #3 (permalink)  
Antiguo 01/05/2013, 14:22
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 7 meses
Puntos: 15
Respuesta: Problema con FULLTEXT

Estabas en lo cierto jurena!, caso resuelto! He puesto las 2 columnas como 1 único índice FULLTEXT.

Etiquetas: campo, fulltext, select, tabla
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:19.