Realizar Pesquisa Full-Text Básica
Nesta etapa, você realizará buscas full-text básicas na tabela articles usando a cláusula MATCH AGAINST. Esta é a forma fundamental de utilizar o índice full-text que você criou.
Certifique-se de que você ainda está no shell do MySQL e usando o banco de dados search_db. Se não estiver, selecione o banco de dados:
USE search_db;
A cláusula MATCH AGAINST é usada dentro da cláusula WHERE de uma instrução SELECT. A sintaxe básica é:
SELECT column1, column2, ...
FROM table_name
WHERE MATCH (column_list) AGAINST ('search_term');
Aqui, column_list é uma lista separada por vírgulas das colunas incluídas no índice full-text (no nosso caso, title e content), e 'search_term' é a palavra ou frase que você deseja pesquisar.
Vamos procurar por artigos que contenham a palavra "MySQL":
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('MySQL');
Esta consulta seleciona as colunas id, title e content da tabela articles onde as colunas title ou content correspondem ao termo "MySQL".
Você deverá ver a seguinte saída:
+----+--------------------------+---------------------------------------------------------------------+
| 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)
Todos os três artigos são retornados porque todos contêm a palavra "MySQL".
A busca full-text também fornece uma pontuação de relevância, indicando o quão bem cada linha corresponde ao termo de busca. Você pode incluir essa pontuação em sua instrução SELECT:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles;
Esta consulta adiciona uma coluna chamada relevance que mostra a pontuação para cada linha.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 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)
Você pode ordenar os resultados por relevância para ver as melhores correspondências primeiro:
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles ORDER BY relevance DESC;
Esta consulta ordena os resultados com base na pontuação de relevance em ordem decrescente.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 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)
Nesta etapa, você aprendeu como realizar buscas full-text básicas usando MATCH AGAINST e como recuperar e ordenar resultados por relevância. Na próxima etapa, você explorará opções de busca mais avançadas usando o modo booleano.