Resumo : neste tutorial, você aprenderá sobre a expansão da consulta MySQL para ampliar os resultados da pesquisa com base no feedback automático de relevância.
Introdução à expansão de consulta MySQL
Normalmente, os usuários procuram informações com base em seu conhecimento. Eles usam sua experiência para criar palavras-chave para pesquisar informações e, às vezes, essas palavras-chave são muito curtas.
Para ajudar os usuários a encontrar informações com base nessas palavras-chave muito curtas, o mecanismo de pesquisa de texto completo MySQL introduz um conceito chamado expansão de consulta .
A expansão da consulta é usada para ampliar o resultado da pesquisa de texto completo com base no feedback automático de relevância (ou expansão da consulta cega).
Tecnicamente, o mecanismo de pesquisa de texto completo MySQL executa as seguintes etapas ao usar a expansão de consulta:
- Primeiro, pesquise todas as linhas que correspondem à consulta de pesquisa.
- Segundo, encontre as palavras relevantes em todas as linhas do resultado da pesquisa.
- Terceiro, pesquise novamente com base nas palavras relevantes, em vez das palavras-chave originais especificadas pelos usuários.
Do ponto de vista do aplicativo, você pode usar a expansão da consulta quando os resultados da pesquisa forem muito poucos. Você realiza as buscas novamente, mas com a ampliação da consulta, para oferecer aos usuários mais informações relacionadas e relevantes ao que procuram.
Para usar a expansão de consulta, você usa o WITH QUERY EXPANSION
modificador de pesquisa na AGAINST()
função.
A seguir ilustra a sintaxe da consulta usando o WITH QUERY EXPANSION
modificador de pesquisa.
SELECT
column1,
column2
FROM
table1
WHERE
MATCH(column1, column2)
AGAINST('keyword', WITH QUERY EXPANSION);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Exemplo de expansão de consulta MySQL
Primeiro, crie uma tabela chamada documents
com um índice FULLTEXT que inclua a contents
coluna
DROP TABLE IF EXISTS documents;
CREATE TABLE documents (
id INT AUTO_INCREMENT PRIMARY KEY,
contents TEXT,
FULLTEXT ( contents )
);
INSERT INTO documents(contents)
VALUES
('MySQL Database'),
('MySQL'),
('Database'),
('SQL'),
('A fork of MySQL'),
('SQLite');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, pesquise um produto cujo nome contenha MySQL
sem usar expansão de consulta.
SELECT
id,
contents
FROM
documents
WHERE
MATCH (contents) AGAINST ('MySQL');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------------+
| id | contents |
+----+-----------------+
| 1 | MySQL Database |
| 2 | MySQL |
| 5 | A fork of MySQL |
+----+-----------------+
3 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Terceiro, use a expansão da consulta para ampliar o resultado da pesquisa:
SELECT
id,
contents
FROM
documents
WHERE
MATCH (contents)
AGAINST ('MySQL' WITH QUERY EXPANSION)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------------+
| id | contents |
+----+-----------------+
| 5 | A fork of MySQL |
| 1 | MySQL Database |
| 3 | Database |
| 2 | MySQL |
+----+-----------------+
4 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
O conjunto de resultados possui mais duas linhas quando usado com a expansão da consulta. A terceira linha vem da palavra-chave relevante derivada de outras linhas que contêm a palavra “MySQL”.
Observe que a expansão da consulta cega tende a aumentar significativamente o ruído ao retornar resultados não relevantes. É altamente recomendável que você use a expansão da consulta somente quando a palavra-chave pesquisada for curta.
Resumo
- Use a expansão da consulta MySQL para ampliar os resultados da pesquisa quando a consulta de pesquisa for muito curta.