Expansão de consulta MySQL

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 EXPANSIONmodificador de pesquisa na AGAINST()função.

A seguir ilustra a sintaxe da consulta usando o WITH QUERY EXPANSIONmodificador 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 documentscom um índice FULLTEXT que inclua a contentscoluna

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *