ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Funciones de búsqueda de texto completo


Enviado por   •  5 de Agosto de 2013  •  Síntesis  •  1.903 Palabras (8 Páginas)  •  495 Visitas

Página 1 de 8

12.7. Funciones de búsqueda de texto completo (Full-Text)

[+/-]

12.7.1. Búsquedas booleanas de texto completo (Full-Text)

12.7.2. Búsquedas de texto completo (Full-Text) con expansión de consulta

12.7.3. Limitaciones de las búsquedas de texto completo (Full-Text)

12.7.4. Afinar búsquedas de texto completo (Full-Text) con MySQL

12.7.5. Cosas por hacer en búsquedas de texto completo (Full-Text)

MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])

MySQL soporta indexación y búsqueda full-text. Un índice full-text en MySQL es un índice de tipo FULLTEXT. Los índices FULLTEXT pueden usarse sólo con tablas MyISAM; pueden ser creados desde columnas CHAR, VARCHAR, o TEXT como parte de un comando CREATE TABLE o añadidos posteriormente usando ALTER TABLE o CREATE INDEX. Para conjuntos de datos grandos, es mucho más rápido cargar los datos en una tabla que no tenga índice FULLTEXT y crear el índice posteriormente, que cargar los datos en una tabla que tenga un índice FULLTEXT existente.

Las restricciones en búsquedas full-text se listan en Sección 12.7.3, “Limitaciones de las búsquedas de texto completo (Full-Text)”.

Las búsquedas full-text se realizan con la función MATCH() .

mysql> CREATE TABLE articles (

-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

-> title VARCHAR(200),

-> body TEXT,

-> FULLTEXT (title,body)

-> );

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO articles (title,body) VALUES

-> ('MySQL Tutorial','DBMS stands for DataBase ...'),

-> ('How To Use MySQL Well','After you went through a ...'),

-> ('Optimizing MySQL','In this tutorial we will show ...'),

-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

-> ('MySQL vs. YourSQL','In the following database comparison ...'),

-> ('MySQL Security','When configured properly, MySQL ...');

Query OK, 6 rows affected (0.00 sec)

Records: 6 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM articles

-> WHERE MATCH (title,body) AGAINST ('database');

+----+-------------------+------------------------------------------+

| id | title | body |

+----+-------------------+------------------------------------------+

| 5 | MySQL vs. YourSQL | In the following database comparison ... |

| 1 | MySQL Tutorial | DBMS stands for DataBase ... |

+----+-------------------+------------------------------------------+

2 rows in set (0.00 sec)

La función MATCH() realiza una búsqueda de lenguaje natural para cadenas contra una colección de textos. Una colección es un conjunto de una o más columnas incluídas en un índice FULLTEXT . La cadena de búsqueda se da como argumento para AGAINST(). Para cada registro en la tabla MATCH() retorna un valor de relevancia, esto es, una medida de similaridad entre la cadena de búsqueda y el texto en el registro en las columnas mencionadas en la lista MATCH().

Por defecto, la búsqueda se realiza de forma insensible a mayúsculas. Sin embargo, puede realizar búsquedas sensibles a mayúsculas usando colaciones binarias para columnas indexadas. Por ejemplo, una columna que usa el conjunto de caracteres latin1 que puede asignarse una colación de latin1_bin para hacerla sensible a mayúsculas para búsquedas full-text .

Cuando se usa MATCH() en una cláusula WHERE , como en el ejemplo precedente, los registros retornados se ordenan automáticamente con la relevancia mayor primero. Los valores relevantes son números en coma flotante no negativos. Relevancia cero significa que no tiene similaridad. La relevancia se computa basada en el número de palabras en el registro, el número de palabras únicas en este registro, el número total de palabras en la colección, y el número de documentos (registros) que contienen una palabra particulas.

Para búsquedas full-text en lenguaje natural, se requiere que las columnas nombradas en la función MATCH() sean las mismas columnas incluídas en algún índice FULLTEXT en su tabla. Para la consulta precedente, tenga en cuenta que las columnas nombradas en la función MATCH() (title y body) son las mismas que las nombradas en la definición del índice FULLTEXT de la tabla article. Si quiere buscar el title o body separadamente, necesitará crear índices FULLTEXT para cada columna.

También es posible realizar una búsqueda boolena o una búsqueda con expansión de consulta. Estos tipos de búsqueda se describen en Sección 12.7.1, “Búsquedas booleanas de texto completo (Full-Text)” y Sección 12.7.2, “Búsquedas de texto completo (Full-Text) con expansión de consulta”.

El ejemplo precedente es una ilustración básica mostrando cómo usar la función MATCH() donde los registros se retornan para decrementar la relevancia. El siguiente ejemplo muestra cómo recibir los valores de relevancia explícitamente. Los registros retornados no se ordenan debido a que el comando SELECT no incluye cláusulas WHERE ni ORDER BY:

mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial')

-> FROM articles;

+----+-----------------------------------------+

| id | MATCH (title,body) AGAINST ('Tutorial') |

+----+-----------------------------------------+

| 1

...

Descargar como (para miembros actualizados) txt (11 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com