Realizar Búsqueda Básica de Texto Completo
En este paso, realizará búsquedas básicas de texto completo en la tabla articles utilizando la cláusula MATCH AGAINST. Esta es la forma fundamental de utilizar el índice de texto completo que creó.
Asegúrese de que todavía está en el shell de MySQL y utilizando la base de datos search_db. Si no es así, seleccione la base de datos:
USE search_db;
La cláusula MATCH AGAINST se utiliza dentro de la cláusula WHERE de una sentencia SELECT. La sintaxis básica es:
SELECT column1, column2, ...
FROM table_name
WHERE MATCH (column_list) AGAINST ('search_term');
Aquí, column_list es una lista separada por comas de las columnas incluidas en el índice de texto completo (en nuestro caso, title y content), y 'search_term' es la palabra o frase que desea buscar.
Busquemos artículos que contengan la palabra "MySQL":
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('MySQL');
Esta consulta selecciona las columnas id, title y content de la tabla articles donde las columnas title o content coinciden con el término "MySQL".
Debería ver la siguiente salida:
+----+--------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+--------------------------+---------------------------------------------------------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. |
+----+--------------------------+---------------------------------------------------------------------+
3 rows in set (0.00 sec)
Se devuelven los tres artículos porque todos contienen la palabra "MySQL".
La búsqueda de texto completo también proporciona una puntuación de relevancia (relevance score), que indica qué tan bien coincide cada fila con el término de búsqueda. Puede incluir esta puntuación en su sentencia SELECT:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles;
Esta consulta añade una columna llamada relevance que muestra la puntuación de cada fila.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
Puede ordenar los resultados por relevancia para ver primero las mejores coincidencias:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles ORDER BY relevance DESC;
Esta consulta ordena los resultados basándose en la puntuación de relevance en orden descendente.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
En este paso, aprendió a realizar búsquedas básicas de texto completo utilizando MATCH AGAINST y cómo recuperar y ordenar resultados por relevancia. En el siguiente paso, explorará opciones de búsqueda más avanzadas utilizando el modo booleano (boolean mode).