Ir al contenido


Foto

Fallo en consulta FULL TEXT

MySQL

  • Por favor identifícate para responder
5 respuestas en este tema

#1 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 31 mayo 2016 - 05:25

Buenas a todos,

 

Realizo una consulta FULL TEXT para que me haga una búsqueda por varios campos de una tabla. Pues bien, me hace la búsqueda por todos los campos menos por uno, lo cual me parece muy extraño, pero le doy vueltas y no alcanzo a saber el por qué.

 

La consulta es la siguiente:


delphi
  1. datamodule1.ZQuery1.SQL.Clear;
  2. datamodule1.ZQuery1.SQL.Add('SELECT ID_USUARIO, EAN, NOMBRE, APELLIDOS,CODIGO_SOCIO,TIPO_USUARIO,');
  3. datamodule1.ZQuery1.SQL.Add('case AUTORIZADO when 1 then :F2 when 0 then :F3 end AS ACCESO,');
  4. datamodule1.ZQuery1.SQL.Add('case CARNET when 1 then :F4 when 0 then :F5 end AS CARNET,');
  5. datamodule1.ZQuery1.SQL.Add('case ESTADO when 1 then :F7 when 0 then :F6 end AS ESTADO');
  6. datamodule1.ZQuery1.SQL.Add('FROM USUARIO');
  7. datamodule1.ZQuery1.SQL.Add('WHERE MATCH(EAN,NOMBRE,APELLIDOS,CODIGO_SOCIO,CIF) AGAINST(:F1 IN BOOLEAN MODE)');
  8. datamodule1.ZQuery1.ParamByName('F1').AsString := '*' + edit1.Text + '*';
  9. datamodule1.ZQuery1.ParamByName('F2').AsString := 'AUTORIZADO';
  10. datamodule1.ZQuery1.ParamByName('F3').AsString := 'DENEGADO';
  11. datamodule1.ZQuery1.ParamByName('F4').AsString := 'SI';
  12. datamodule1.ZQuery1.ParamByName('F5').AsString := 'NO';
  13. datamodule1.ZQuery1.ParamByName('F6').AsString := 'AUSENTE';
  14. datamodule1.ZQuery1.ParamByName('F7').AsString := 'PRESENTE';
  15. datamodule1.ZQuery1.Active := True;

Resulta que la consulta por los campos EAN, NOMBRE, APELLIDOS, Y CIF lo hace perfectamente, sin embargo cuando introduzco un CODIGO_SOCIO no me muestra ningún resultado, y por supuesto, hay datos de ese campo.

Como es una búsqueda FULL TEXT, en engine de la tabla es MyISAM. El índice creado para tal efecto, os lo adjunto en el post.

Archivo adjunto  FULLTEXT.jpg   31,53KB   1 descargas

 

Muchas gracias por vuestro tiempo.

Un saludo

 

 

 


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 mayo 2016 - 07:31

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.
  • 0

#3 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 31 mayo 2016 - 08:20

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.

 

Saludos.

 

En teoría deberías juntar todos los campos en un solo para realizar la consulta por el mismo, dicho campo contendría la combinación de los distintos campos con ello distintos tipos de datos.

 

Usualmente se construye una tabla con el campo principal de la otra tabla (por ejemplo: ClienteId) y uno tipo texto con la combinación de campos, realizando así la búsqueda por dicho campo.


  • 0

#4 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 31 mayo 2016 - 10:23

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.

Todos los campos indicados son varchar(50)
  • 0

#5 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 31 mayo 2016 - 10:36

Saludos.

En teoría deberías juntar todos los campos en un solo para realizar la consulta por el mismo, dicho campo contendría la combinación de los distintos campos con ello distintos tipos de datos.

Usualmente se construye una tabla con el campo principal de la otra tabla (por ejemplo: ClienteId) y uno tipo texto con la combinación de campos, realizando así la búsqueda por dicho campo.


En teoría por eso se crea el índice tal y como he puesto en el post, para 'crear' ese campo que agrupe a todos los implicados en la búsqueda. Pero sigo sin entender por qué busca bien por todos los campos menos por el de CODIGO_SOCIO, siendo todos campos tipo texto
  • 0

#6 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 06 junio 2016 - 01:08

Saludos a todos nuevamente,

 

he seguido probando varias opciones, pero sigo sin solucionar el problema que os he planteado.

 

Necesito un poco más de orientación.

 

Gracias por vuestro tiempo


  • 0





Etiquetado también con una o más de estas palabras: MySQL

IP.Board spam blocked by CleanTalk.