MySQL COMBINA CONTRA

Resumo : neste tutorial, você aprenderá como usar o MySQL MATCH()e AGAINST()funções para realizar pesquisas de texto completo.

Introdução à função MySQL MATCH() AGAINST()

O MySQL fornece as funções MATCH()e AGAINST()para realizar pesquisas de texto completo:

  • A MATCH()função aceita uma lista separada por vírgulas de nomes de colunas a serem pesquisadas.
  • A AGAINST()função usa uma string para pesquisar e um modificador opcional que indica o tipo de pesquisa.

O seguinte ilustra a sintaxe para usar as funções MATCH()e :AGAINST()

SELECT 
  * 
FROM 
  table_name 
WHERE 
  MATCH(column1, column2,...) 
   AGAINST('search_term' IN NATURAL LANGUAGE MODE);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • table_name: O nome da tabela que você deseja pesquisar.
  • column1, column2, ...: as colunas da tabela especificada nas quais você deseja pesquisar.
  • 'search_term': o termo ou frase que você deseja pesquisar.
  • IN NATURAL LANGUAGE MODE: Este é o modo de pesquisa padrão. Outros modos incluem IN BOOLEAN MODEe WITH QUERY EXPANSION.

A tabela a seguir compara os três modos quando se trata de pesquisa de texto completo

Modo MODO DE LINGUAGEM NATURAL MODO BOOLEAN COM EXPANSÃO DE CONSULTA
Processamento de linguagem natural Executa o processamento de linguagem natural na consulta de pesquisa. Não realiza processamento de linguagem natural; suporta operadores e modificadores booleanos. Semelhante, NATURAL LANGUAGE MODEmas estende a consulta de pesquisa incluindo sinônimos das palavras.
Classificação de relevância Os resultados são classificados por relevância. Os resultados normalmente são classificados por relevância. Os resultados são classificados por relevância, semelhante a NATURAL LANGUAGE MODE.
Operadores e modificadores booleanos Não oferece suporte a operadores booleanos. Palavras comuns (palavras irrelevantes) são ignoradas, a menos que sejam incluídas entre aspas duplas. Suporta operadores booleanos (AND, OR, NOT). Permite ajuste fino com modificadores (+, -, *). Não oferece suporte a operadores booleanos. Sinônimos são incluídos, expandindo a consulta de pesquisa.
Significado da palavra Não oferece suporte a operadores booleanos. Palavras comuns (palavras irrelevantes) são ignoradas, a menos que sejam incluídas entre aspas duplas. O significado pode ser atribuído às palavras usando + ou -. Sinônimos são incluídos, expandindo a consulta de pesquisa.
Casos de uso Adequado para pesquisas simples e sensíveis ao contexto. Útil para pesquisas complexas com lógica booleana e controle refinado sobre os termos de pesquisa. Útil quando você deseja capturar uma gama mais ampla de conteúdo relevante.

Exemplos de MySQL MATCH CONTRA

Criaremos uma poststabela com um índice de texto completo , inseriremos alguns dados nela e realizaremos pesquisas de texto completo para ilustrar as funções MATCH()e AGAINST().

Primeiro, crie uma tabela chamada posts:

CREATE TABLE posts(
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    body TEXT NOT NULL,
    FULLTEXT(title, body)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, insira algumas linhas na poststabela:

INSERT INTO posts (title, body) VALUES
('Introduction to MySQL', 'MySQL is a popular relational database management system.'),
('Advanced SQL Techniques', 'Learn advanced SQL techniques for optimizing queries.'),
('Web Development with PHP', 'Building dynamic websites using PHP and MySQL.'),
('Data Security Best Practices', 'Ensuring the security of your database and sensitive information.'),
('MySQL Performance Tuning', 'Optimizing the performance of your MySQL database.'),
('Database Design Principles', 'Designing efficient and normalized database structures.'),
('Full-Text Search in MySQL', 'Exploring the powerful full-text search capabilities of MySQL.'),
('Scaling MySQL for Large Datasets', 'Strategies for scaling MySQL to handle large datasets.'),
('Error Handling in MySQL', 'Best practices for handling errors in MySQL queries.'),
('Backup and Recovery Strategies', 'Implementing reliable backup and recovery strategies for MySQL.');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

1) MODO DE LINGUAGEM NATURAL

  • Modo padrão: se você não especificar um modo, NATURAL LANGUAGE MODEserá usado por padrão.
  • Processamento de linguagem natural: neste modo, o MySQL executa o processamento de linguagem natural na consulta de pesquisa. Tenta compreender o contexto e a relevância das palavras no termo de pesquisa.
  • Classificação por relevância: os resultados são classificados por relevância, com as correspondências mais relevantes aparecendo primeiro.
  • Exclusão de palavras: palavras comuns (palavras irrelevantes) como “e”, “ou” e “o” são ignoradas, a menos que você use aspas duplas para torná-las parte de uma frase.

Por exemplo:

SELECT 
  * 
FROM 
  posts 
WHERE 
  MATCH(title, body) 
  AGAINST('database' IN NATURAL LANGUAGE MODE);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+------------------------------+-------------------------------------------------------------------+
| id | title                        | body                                                              |
+----+------------------------------+-------------------------------------------------------------------+
|  6 | Database Design Principles   | Designing efficient and normalized database structures.           |
|  1 | Introduction to MySQL        | MySQL is a popular relational database management system.         |
|  4 | Data Security Best Practices | Ensuring the security of your database and sensitive information. |
|  5 | MySQL Performance Tuning     | Optimizing the performance of your MySQL database.                |
+----+------------------------------+-------------------------------------------------------------------+
4 rows in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

2) MODO BOOLEAN

  • Lógica Booleana: Este modo permite que você use operadores booleanos ( AND, OR, NOT) e modificadores ( +para obrigatório, -para excluído, *para curinga) em suas consultas de pesquisa.
  • Flexibilidade: oferece mais flexibilidade na construção de consultas de pesquisa complexas, permitindo ajustar a lógica de pesquisa.
  • Significado das palavras: você pode atribuir significado às palavras usando +ou -para influenciar a relevância dos resultados.

Por exemplo:

SELECT 
  * 
FROM 
  posts 
WHERE 
  MATCH(title, body) 
  AGAINST(
    'web AND full' IN BOOLEAN MODE
  );Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+--------------------------------+-------------------------------------------------------------------+
| id | title                          | body                                                              |
+----+--------------------------------+-------------------------------------------------------------------+
|  7 | Full-Text Search in MySQL      | Exploring the powerful full-text search capabilities of MySQL.    |
|  3 | Web Development with PHP       | Building dynamic websites using PHP and MySQL.                    |
| 10 | Backup and Recovery Strategies | Implementing reliable backup and recovery strategies for MySQL.   |
|  4 | Data Security Best Practices   | Ensuring the security of your database and sensitive information. |
|  6 | Database Design Principles     | Designing efficient and normalized database structures.           |
+----+--------------------------------+-------------------------------------------------------------------+
5 rows in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

3) COM EXPANSÃO DE CONSULTA

  • Expansão da consulta: Este modo estende a consulta de pesquisa incluindo os sinônimos das palavras na consulta original. Pode ampliar os resultados da pesquisa incluindo termos relacionados.
  • Classificação por relevância: semelhante a NATURAL LANGUAGE MODE, os resultados são classificados por relevância.

Por exemplo:

SELECT 
  * 
FROM 
  posts 
WHERE 
  MATCH(title, body) 
  AGAINST('SQL' WITH QUERY EXPANSION);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+--------------------------+-------------------------------------------------------+
| id | title                    | body                                                  |
+----+--------------------------+-------------------------------------------------------+
|  2 | Advanced SQL Techniques  | Learn advanced SQL techniques for optimizing queries. |
|  5 | MySQL Performance Tuning | Optimizing the performance of your MySQL database.    |
|  9 | Error Handling in MySQL  | Best practices for handling errors in MySQL queries.  |
+----+--------------------------+-------------------------------------------------------+
3 rows in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Escolhendo o modo de pesquisa correto

A escolha do modo correto depende da natureza de suas consultas de pesquisa e do nível de controle necessário sobre a lógica de pesquisa.

Aqui estão as diretrizes gerais:

  • Use NATURAL LANGUAGE MODEpara pesquisas simples onde o processamento de linguagem natural é suficiente.
  • Use BOOLEAN MODEpara pesquisas mais complexas com lógica booleana e controle refinado sobre os termos de pesquisa.
  • Use WITH QUERY EXPANSIONquando quiser incluir sinônimos e ampliar o escopo da pesquisa.

Na prática, você deve experimentar diferentes modos para encontrar a abordagem mais eficaz para seu caso de uso específico.

Resumo

  • Use MATCH() AGAINST()a função MySQL para realizar pesquisas de texto completo.

Deixe um comentário

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