Resumo : neste tutorial, você aprenderá sobre a pesquisa de texto completo em linguagem natural do MySQL usando as funções MATCH()
e AGAINST()
.
Introdução às pesquisas de texto completo em linguagem natural do MySQL
Em pesquisas de texto completo em linguagem natural, o MySQL procura documentos relevantes para a consulta de texto livre em linguagem humana natural. MySQL representa a relevância como um número positivo de ponto flutuante, onde uma relevância zero indica nenhuma similaridade.
O MySQL calcula a relevância com base em vários fatores, incluindo o número de palavras e palavras únicas no documento, o número total de palavras na coleção e o número de documentos (linhas) contendo uma palavra específica.
Para realizar pesquisas de texto completo em linguagem natural, você usa as funções MATCH()
eAGAINST()
.
Exemplo de pesquisa de texto completo em linguagem natural MySQL
Primeiro, crie uma tabela chamada documents
com um índice de texto completo que inclua a contents
coluna:
DROP TABLE IF EXISTS documents;
CREATE TABLE documents (
id INT AUTO_INCREMENT PRIMARY KEY,
contents TEXT,
FULLTEXT ( contents )
);
Segundo, insira algumas linhas na documents
tabela:
INSERT INTO documents(contents)
VALUES
('MySQL Database'),
('MySQL'),
('Database'),
('SQL'),
('A fork of MySQL');
Linguagem de código: JavaScript ( javascript )
Terceiro, procure os documentos cujo conteúdo contenha a palavra “mysql”:
SELECT
id,
contents,
MATCH (contents) AGAINST ('mysql') relevancy
FROM
documents
WHERE
MATCH (contents) AGAINST ('mysql');
Linguagem de código: JavaScript ( javascript )
Saída:
+----+-----------------+--------------------+
| id | contents | relevancy |
+----+-----------------+--------------------+
| 1 | MySQL Database | 0.0492168664932251 |
| 2 | MySQL | 0.0492168664932251 |
| 5 | A fork of MySQL | 0.0492168664932251 |
+----+-----------------+--------------------+
3 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Quarto, procure os documentos cujo conteúdo contenha as palavras “mysql” e/ou “banco de dados”:
SELECT
id,
contents,
MATCH (contents) AGAINST ('mysql,database') relevancy
FROM
documents
WHERE
MATCH (contents) AGAINST ('mysql,database');
Linguagem de código: JavaScript ( javascript )
Saída:
+----+-----------------+---------------------+
| id | contents | relevancy |
+----+-----------------+---------------------+
| 1 | MySQL Database | 0.20757311582565308 |
| 3 | Database | 0.15835624933242798 |
| 2 | MySQL | 0.0492168664932251 |
| 5 | A fork of MySQL | 0.0492168664932251 |
+----+-----------------+---------------------+
4 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
A saída indica que os documentos que possuem as palavras “MySQL” e “Banco de dados” têm maior relevância.
Quinto, procure o documento com a frase exata “Banco de dados MySQL” colocando o termo de pesquisa entre aspas duplas:
SELECT
id,
contents,
MATCH (contents) AGAINST ('"MySQL Database"') relevancy
FROM
documents
WHERE
MATCH (contents) AGAINST ('"MySQL Database"');
Linguagem de código: JavaScript ( javascript )
Saída:
+----+----------------+---------------------+
| id | contents | relevancy |
+----+----------------+---------------------+
| 1 | MySQL Database | 0.20757311582565308 |
+----+----------------+---------------------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- Use a pesquisa de texto completo em linguagem natural do MySQL para aumentar a precisão de suas consultas de pesquisa, fornecendo resultados mais relevantes com base no contexto e no significado dos termos de pesquisa inseridos.