Uso da pesquisa de texto completo¶
Você pode usar funções de pesquisa para encontrar dados de caracteres (texto) e endereços IP em colunas especificadas de uma ou mais tabelas, incluindo campos nas colunas VARIANT, OBJECT e ARRAY. Essa função pesquisa o texto em colunas ou cadeias de caracteres especificadas com base em uma lista de termos de pesquisa fornecidos. A função retorna TRUE se o texto corresponder aos termos de pesquisa especificados com base na semântica da pesquisa.
Na maioria dos casos, você chama a função SEARCH especificando-a na lista SELECT ou na cláusula WHERE de uma instrução SELECT. Se a função for usada como um filtro de cláusula WHERE, a consulta retornará linhas quando a função retornar TRUE.
A função SEARCH não requer configuração nem privilégios adicionais. Se estiver usando uma função que tenha privilégios para acessar os dados em uma coluna, você poderá pesquisar esses dados usando a função SEARCH.
As próximas seções contêm mais informações sobre a função SEARCH e sobre como otimizar o desempenho da consulta quando você a utiliza:
Uso da função SEARCH¶
A função SEARCH encontra dados de caracteres (texto) em colunas especificadas de uma ou mais tabelas, incluindo campos nas colunas VARIANT, OBJECT e ARRAY.
Quando você usa a função SEARCH, um analisador de texto divide o texto em tokens, que são unidades discretas de texto, como palavras ou números. Um analisador padrão será aplicado se você não especificar um. O analisador extrai tokens dos termos de pesquisa e dos dados.
Se os tokens extraídos dos termos de pesquisa corresponderem aos tokens extraídos de uma coluna ou campo especificado de acordo com a semântica da pesquisa, a função retornará TRUE. O argumento da função SEARCH_MODE especifica 'OR' (disjuntivo) ou 'AND' (conjuntivo) para a semântica de pesquisa:
Quando
'OR'(o padrão) é especificado, há uma correspondência se qualquer dos tokens extraídos das colunas ou campos sendo pesquisados corresponder a qualquer dos tokens extraídos da cadeia de caracteres de pesquisa. Por exemplo, se o valorsearch_stringfor'blue red green', a função retornará TRUE para uma linha que contenhablueORredORgreenem qualquer uma das colunas ou campos sendo pesquisados.Quando
'AND'é especificado, há uma correspondência se os tokens extraídos de pelo menos uma das colunas ou campos sendo pesquisados corresponderem a todos os dos tokens extraídos da cadeia de caracteres de pesquisa. Os tokens correspondentes devem estar todos em uma coluna ou campo; não podem estar espalhados por várias colunas ou campos. Por exemplo, se o valorsearch_stringfor'blue red green', a função retornará TRUE para uma linha que contenhablueANDredANDgreenem pelo menos uma das colunas ou campos sendo pesquisados.
O exemplo a seguir procura a cadeia de caracteres snow leopard no texto leopard com o padrão SEARCH_MODE ('OR') e o analisador padrão:
SELECT SEARCH('leopard', 'snow leopard');
+-----------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD') |
|-----------------------------------|
| True |
+-----------------------------------+
O exemplo a seguir procura a cadeia de caracteres snow leopard no texto lion:
SELECT SEARCH('lion', 'snow leopard');
+--------------------------------+
| SEARCH('LION', 'SNOW LEOPARD') |
|--------------------------------|
| False |
+--------------------------------+
O exemplo a seguir procura a cadeia de caracteres snow leopard no texto leopard e especifica 'AND' para o argumento SEARCH_MODE:
SELECT SEARCH('leopard', 'snow leopard', search_mode => 'AND');
+---------------------------------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD', SEARCH_MODE => 'AND') |
|---------------------------------------------------------|
| False |
+---------------------------------------------------------+
Para obter mais informações sobre essa função e exemplos adicionais, consulte SEARCH.
Uso da função SEARCH_IP¶
A função SEARCH_IP encontra endereços IPv4 e IPv6 válidos em colunas de cadeias de caracteres especificadas de uma ou mais tabelas, incluindo campos nas colunas VARIANT, OBJECT e ARRAY. A pesquisa é baseada em um único endereço IP que você especifica. Se esse endereço IP corresponder exatamente a um endereço IP na coluna ou campo especificado, a função retornará TRUE.
O exemplo a seguir procura o endereço IP 10.10.10.1 no texto 192.0.2.146:
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
Para obter mais informações sobre essa função e exemplos adicionais, consulte SEARCH_IP.
Otimizar consultas que usam a função SEARCH¶
Para melhorar o desempenho das consultas que usam a função, você pode opcionalmente habilitar a otimização de pesquisa FULL_TEXT em uma coluna específica ou um conjunto de colunas em uma tabela. Quando você ativa a otimização de pesquisa, um novo caminho de acesso à pesquisa é criado e mantido.