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

Busqueda campos FullText

Estas en el tema de Busqueda campos FullText en el foro de Mysql en Foros del Web. Hola, buenos dias! me inscribi en este foro ya que tengo un pequeño problema que quisiera resolver pero no entiendo por q no funciona lo ...
  #1 (permalink)  
Antiguo 04/06/2013, 09:57
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Busqueda campos FullText

Hola, buenos dias! me inscribi en este foro ya que tengo un pequeño problema que quisiera resolver pero no entiendo por q no funciona lo que hago, intento hacer un buscador con campos de mi base de datos mysql fulltext
la siguiente es la consulta que realizo

Código MySQL:
Ver original
  1. SELECT nombre_apellido,id,cedula MATCH ( nombre_apellido, cargo, nivel  )
  2. AGAINST ( '$buscar' )
  3. FROM trabajadores
  4. MATCH ( nombre_apellido, cargo, nivel ) AGAINST ( '$buscar' )

que estoy haciendo mal? no me arroja resultados, o sea con la funcion mysql_num_rows() me dice 0

Última edición por gnzsoloyo; 05/06/2013 a las 19:19
  #2 (permalink)  
Antiguo 04/06/2013, 11:11
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Busqueda campos FullText

Hola edward1994:

Antes que nada, bienvenido al foro... veo que es tu primer post así es que antes que nada, algunos comentarios acerca de las políticas del foro.

1. No postees ningún código de ningún lenguaje de programación (PHP, JAVA, .NET, etc) sólo publica código SQL. Cualquier código de programación está prohibido y te expones a que los moderadores editen tu mensaje, lo cambien de foro o incluso que lo borren...

checa las demás Políticas del Foro.

2. En tu post trata de poner todos los elementos que creas necesarios para dejar en claro tu problema... publica la estructura de tus tablas, si es posible postea algunos datos de ejemplo, y dinos qué es lo que esperas como salida.

3. Con respecto a tu consulta, ejecuta las consultas directamente en una consola de MySQL (esto tiene también que ver con el punto 1), es decir asegúrate de saber perfectamente qué es lo que estás tratando de ejecutar. En tu consulta manejas el parámetro "$buscar", pero ¿sabes qué es lo que contiene?... no hagas suposiciones y digas, es que "DEBE DE CONTENER LO QUE ESTOY TRATANDO DE BUSCAR"... Ese es un error típico de los programadores. Has un ECHO a tu consulta y verifica qué es exactamente lo que estás tratando de ejecutar.

4. Creo que tienes un error de sintaxis o al menos faltó una coma en esta sección:

Código:
SELECT nombre_apellido,id,cedula MATCH ( nombre_apellido, cargo, nivel  )  
Supongo que lo que pretendes es mostrar la relevancia del texto encontrado, si cedula es un campo, entonces deberías hacer algo como esto:

Código:
SELECT nombre_apellido, id, cedula, MATCH ( nombre_apellido, cargo, nivel  )
5. Cuando una consulta no marca error, pero no te regresa la información que necesitas, es que en realidad no existe ningún registro que cumpla con esa condición... o tienes problemas con los datos, o la condición está equivocada.

Finalmente, si continuas con problemas has un

SHOW CREATE TABLE trabajadores;

Y postea el resultado y como te dije, si es posible postea también algunos datos de ejemplo.

Saludos
Leo.
  #3 (permalink)  
Antiguo 05/06/2013, 17:57
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: Busqueda campos FullText

Hola compañero. muchas gracias por su bienvenida :D
le comento que sigo con el problema de la consulta, al parecer como dice usted, es problema de la base de datos! hice lo que me dijo del show create table y me devolvio esto

Código MySQL:
Ver original
  1. CREATE TABLE `trabajadores` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `cargo` varchar(300) NOT NULL,
  4.   `nivel` varchar(300) NOT NULL,
  5.   `nombre_apellido` varchar(500) NOT NULL,
  6.   `cedula` int(11) NOT NULL,
  7.   PRIMARY KEY (`id`),
  8.   UNIQUE KEY `nombre_apellido_6` (`nombre_apellido`),
  9.   KEY `nombre_apellido_4` (`nombre_apellido`),
  10.   KEY `nombre_apellido_5` (`nombre_apellido`),
  11.   KEY `nombre_apellido_7` (`nombre_apellido`),
  12.   FULLTEXT KEY `cargo` (`cargo`),
  13.   FULLTEXT KEY `nivel` (`nivel`),
  14.   FULLTEXT KEY `nombre_apellido` (`nombre_apellido`),
  15.   FULLTEXT KEY `nombre_apellido_2` (`nombre_apellido`),
  16.   FULLTEXT KEY `nombre_apellido_3` (`nombre_apellido`),
  17.   FULLTEXT KEY `cargo_2` (`cargo`,`nivel`,`nombre_apellido`),
  18.   FULLTEXT KEY `nombre_apellido_8` (`nombre_apellido`),
  19.   FULLTEXT KEY `nombre_apellido_9` (`nombre_apellido`)
  20. ) ENGINE=MyISAM AUTO_INCREMENT=2803 DEFAULT CHARSET=latin1

por lo visto hay muchas cosas q se repiten no? pienso q no deberia ser asi...que tengo mal? como lo arreglo? gracias
  #4 (permalink)  
Antiguo 05/06/2013, 23:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Busqueda campos FullText

Además de lo que te dice Leonardo, fíjate en que buscas en un índice compuesto FULL_TEXT que no has creado tal cual lo buscas. Deberías crear ese índice FULLTEXT con esos tres campos y en ese orden. . Tampoco tiene sentido que crees 4 índices fulltext para el mismo campo (nombre_apellido).
Cita:
FULLTEXT KEY `cargo` (`cargo`),
FULLTEXT KEY `nivel` (`nivel`),
FULLTEXT KEY `nombre_apellido` (`nombre_apellido`),
FULLTEXT KEY `nombre_apellido_2` (`nombre_apellido`),
FULLTEXT KEY `nombre_apellido_3` (`nombre_apellido`),
FULLTEXT KEY `cargo_2` (`cargo`,`nivel`,`nombre_apellido`),
FULLTEXT KEY `nombre_apellido_8` (`nombre_apellido`),
FULLTEXT KEY `nombre_apellido_9` (`nombre_apellido`)
pero luego buscas en un índice compuesto por varios campos que no has creado, al menos en el mismo orden. tienes el índice cargo_2 con los mismos campos, pero en distinto orden. Créalo en el mismo orden en que invoques el índice

Código MySQL:
Ver original
  1. ... MATCH ( nombre_apellido, cargo, nivel  )... WHERE
  2. MATCH ( nombre_apellido, cargo, nivel )

Además, tampoco sabemos si tienes suficientes datos (no recuerdo ahora el número mínimo, pero creo que más de 6 o así) o tienes demasiados que cumplan la condición (porcentualmente sobre el total). Una y otra cosa tampoco devolvería resultados.

Última edición por jurena; 05/06/2013 a las 23:48
  #5 (permalink)  
Antiguo 06/06/2013, 09:44
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: Busqueda campos FullText

aaah lo que paso es q en el mysql aparecia el icono de full text y yo le daba y daba como no desabilitaba! pensaba q no funcionaba :S...y entonces como le quito el fulltext para luego hacerlo asi como dicen ustedes? muchas gracias :D

Etiquetas: busqueda, campo, campos, fulltext, 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 10:16.