Uso da pesquisa de texto completo¶
Você pode usar funções de pesquisa para encontrar dados de caracteres (texto) e endereços IPv4 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_string
for'blue red green'
, a função retornará TRUE para uma linha que contenhablue
ORred
ORgreen
em 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_string
for'blue red green'
, a função retornará TRUE para uma linha que contenhablue
ANDred
ANDgreen
em 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 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.