lunes, 6 de octubre de 2008

Búsquedas fulltext en mysql

Las búsqueda fulltext son un tipo de búsqueda especial para los campos de texto, en MySQL solo está disponible para el motor MyISAM. Incluso los resultados se ordenan por relevancia.

Se pueden indexar en modo fulltext los campos de tipo char, varchar y text.

Para crear un índice fulltext la sintaxis es la siguiente.

alter table tabla add fulltext(campo);

Se pueden combinar varios campos para el índice.

alter table tabla add fulltext(campo1,campo2);

La sintaxis para las consultas fulltext.

select * from tabla where match(campo) against('contenido');

Hay que tener en cuenta ciertas condiciones al realizar búsquedas, las más importantes:

1) Si la consulta aparece en la mitad de los registros se toma como 'común', se ignoran los resultados
2) Se ignoran palabras demasiado cortas

Si no nos viene bien la regla 1), podemos hacer las búsquedas en 'modo booleano' aunque en este caso los resultados no se ordenan por relevancia.

select * from tabla where match(campo) against('contenido' in boolean mode);

En 'modo booleano' se pueden aplicar también modificadores, por ejemplo, si queremos las tuplas con contenido 'texto' y sin 'basura'.

select * from tabla where match(campo) against('+texto -basura' in boolean mode);

También se puede utilizar el wildcard '*'.

select * from tabla where match(campo) against('text*' in boolean mode);

0 comentarios: