El asunto es el siguiente…

Supongamos que queremos realizar una búsqueda dentro de una base de datos MySQL, y a la vez esa busqueda en varios campos, establecer prioridades de busqueda, y una serie de customizaciones mas…

Entonces para remplazar al típico operador LIKE vamos a utilizar búsquedas Full-Text.

Para explicar un poco esto… Full-Text es un tipo de indice (KEY o INDEX) que aplicado a distintas columnas permite realizar búsquedas rápidas y precisas sobre estas.

Características generales:
– Es aplicable solamente a campos de tipo CHAR, VARCHAR, o TEXT
– Solo funcionan utilizando el motor MyISAM (Default en la instalacion de MySQL)
– Pueden agregarse cuando se crea una tabla, o directamente ejecutando una consulta para modificar una tabla en particular. Por ejemplo de esta forma

Para utilizar este tipo de búsqueda vamos a usar los operadores MATCH y AGAINST.

Un ejemplo basico seria el siguiente:

Los operadores que pueden utilizarse en AGAINST para perfeccionar la búsqueda son los siguientes:

  • +

    Ejemplo de uso:

  • Ejemplo de uso:

  • ~

    Ejemplo de uso:

  • > <

    Hacen referencia a la precedencia de una palabra
    Ejemplo: (abajo)

  • ( )

    Hace referencia a un conjunto de subexpresiones
    Ejemplo de uso:

  • *

    Hace referencia a cualquier caracter encontrado
    Ejemplo de uso:

  • “”

    Hace referencia a una expresión literal
    Ejemplo de uso:

  • %

    Hace referencia a cualquiera de las palabras de la expresión
    Ejemplo de uso:

Es cuestión de armar las mezclas de estos operadores que necesitemos para lograr resultados mas precisos en nuestras busquedas

Hay que destacar que los resultados en los que mayores coincidencias (y en la mayor cantidad de campos) se hayan encontrado tendrán una puntuación mayor al resto de resultados de la consulta

Una buena forma de ordenar nuestros resultados para poder listarlos de mayor puntuacion a menor es la siguiente

Para mas informacion consulten la pagina oficial http://dev.mysql.com/doc/refman/5.0/es/fulltext-search.html

Espero que les sirva! Cualquier error que alguien note, comentelo!… porque se me puede pasar!

Saludos!

Categorías: MySQL

2 commentarios

gdw · 18 septiembre 2009 a las 10:28

Buenísimo el aporte, espero que lo aprovechen todos, yo por mi parte lo voy a utilizar en un sistema con BD distribuidas en lan/wan con vb+mysql

logan · 26 marzo 2012 a las 18:47

es muy bueno
lo voy a usar
gracis por tu ayuda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *