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

FULLTEXT SERACH - Problema!

Estas en el tema de FULLTEXT SERACH - Problema! en el foro de Mysql en Foros del Web. Saludos a todos! Espero que alguien me pueda ayudar con esto. No soy muy bueno planteando problemas pero haré mi mejor intento. Resulta que quiero ...
  #1 (permalink)  
Antiguo 17/12/2006, 20:03
 
Fecha de Ingreso: marzo-2006
Mensajes: 66
Antigüedad: 18 años, 1 mes
Puntos: 0
FULLTEXT SERACH - Problema!

Saludos a todos! Espero que alguien me pueda ayudar con esto. No soy muy bueno planteando problemas pero haré mi mejor intento.

Resulta que quiero agregar la funcionalidad "FULLTEXT" a una de mis tablas, de ésta manera poder usar MATCH() y AGAINST() para realizar búsquedas. Sin embargo cada ves que realizo una búsqueda, mySQL me devuelve "Empty set", y no se que estoy haciendo mal, no encuentro ningun error.

Decidí dejar a un lado esa tabla y crear una nueva y esta ves SI funcionó. Este fue mi código para crear la nueva tabla:

Código:
//Creando la nueva tabla
CREATE TABLE `miTabla` (
`texto` TEXT NOT NULL
) ENGINE = MYISAM ;

//Definiendo un índice FULLTEXT
alter table miTable add FULLTEXT(texto)

//Insertando algunos datos
insert into miTabla (texto) values ("Queso Jamon");
insert into miTabla (texto) values ("Manzana Pera");
insert into miTabla (texto) values ("Perro Gato");
insert into miTabla (texto) values ("Monitor Teclado");

//Realizando la búsqueda
select * from miTabla where MATCH(texto) AGAINST('Jamon');

//El resultado es el deseado
Pero no puedo saber que pasa con mi otra tabla. La estructura de mi tabla es la siguiente:

Código:
describe paginas; //La tabla que da el error
+----------------+--------------+------+-----+---------+----------------+
| Field               | Type            | Null | Key | Default | Extra               |
+----------------+--------------+------+-----+---------+----------------+
| id                  | int(11)          | NO   | PRI | NULL    | auto_increment |
| nombre           | varchar(255) | YES  |      | NULL    |                       |
| pagina            | varchar(10)  | YES  |       | NULL    |                       |
| archivo           | varchar(255) | YES  |      | NULL    |                       |
| pertenece       | varchar(255) | YES  |       | NULL    |                      |
| palabras_clave | text             | YES  |MUL | NULL    |                       |
+----------------+--------------+------+-----+---------+----------------+
Mi version de MySQL crea las tablas con un motor "InnoDB" por lo que le he cambiado el motor a MyISAM, pero todavía no funciona.

Simplemente pareciería que mySQL no encontrara nada, no me da ningun error ni nada.

Debo decir que la información a la tabla es introducida por PHP, pero no creo que estoy haga mucha diferencia

Cualquier ayuda será bien recibida. Muchas gracias!
  #2 (permalink)  
Antiguo 18/12/2006, 11:38
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Re: FULLTEXT SERACH - Problema!

como defines el indice fulltext en esa otra tabla? como haces la consulta?
  #3 (permalink)  
Antiguo 18/12/2006, 12:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 66
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: FULLTEXT SERACH - Problema!

De la misma manera. He borrado el índice fulltext y lo he vuelto a intentar, ésto es lo que me dice mySQL:

Código:
//La información en la que pretendo realizar mi búsqueda:
---
mysql> select palabras_clave from paginas;
+---------------------------+
| palabras_clave                  |
+---------------------------+
| queso jamon pan               |
+---------------------------+
1 row in set (0.00 sec)


//Borro el índice
---
mysql> alter table paginas drop index palabras_clave;
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0


//Intento realizar una búsqueda fulltext (me va a decir obviamente que no)
---
mysql> select * from paginas where match(palabras_clave) against('jamon');
ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list


//Agrego nuevamente el índice fulltext
---
mysql> alter table paginas add fulltext(palabras_clave);
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0


//Realizo nuevamente la búsqueda fulltext
mysql> select * from paginas where match(palabras_clave) against('jamon');
Empty set (0.00 sec)

//ME DEVUELVE "EMPTY SET" !!! ¿Qué salió mal?
No encuentro ningun problema. ¿Alguna idea?
  #4 (permalink)  
Antiguo 18/12/2006, 12:34
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Re: FULLTEXT SERACH - Problema!

Las busquedas fulltext no devuelven resultados que esten en mas del 50 % de los registros, por lo qeu debes tener al menos 3 registros en tu tabla

mas informacion en la pagina oficial de mysql http://dev.mysql.com/doc/refman/5.0/...xt-search.html
  #5 (permalink)  
Antiguo 18/12/2006, 12:53
 
Fecha de Ingreso: marzo-2006
Mensajes: 66
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: FULLTEXT SERACH - Problema!

Muchas gracias. Efectivamente, necesito mínimo 3 filas para poder obtener resultados. Igualmente las palabras de tres careacteres o menos son ignoradas.

¿Es posible cambiar estas características de fulltext? Supongo que si es posible cambiar "ft_min_word_lent" (por ejemplo), pero mi servidor no me da acceso a la consola de mysql, solo a phpMyAdmin. Localmente quizá las podría cambiarlas pero en el servidor sería otra historia.

¿Se pueden cambiar estas características cuando creo mis tablas? o ¿cambiarlas dinámicamente sin modificar ningun archivo?

Gracias!
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 16:02.