Full-Text Search – Configuração e primeiras consultas

Destaque, Full-Text Search

Bom dia pessoas!

Algumas conversas com o Rodrigo Oliveira (at. Rodrigo Oliveira) sobre Full-Text Search (FTS) me animaram a escrever algumas coisas sobre esta feature, que tive a oportunidade de fazer uso de formas diversas em clientes e projetos.

Mas para que serve esta feature? Nestes primeiros artigos, veremos que ela é útil para indexar textos que normalmente utilizamos aquela já conhecida expressão “Campo LIKE ‘%valor%’” permitindo maior desempenho, além de outras facilidades, como pesquisar palavras independente de variação de gênero (masculino, feminino) ou número (singular, plural).

Para inicio de conversa, precisamos de uma tabela com campos textos (varchar, nvarchar, char e nchar – xml e varbinary também podem entrar na brincadeira, mas veremos em outra oportunidade) para indexar, lembrando que também será necessária uma chave única ou primária formada por um único campo nesta tabela.

criação da tabela

Em seguida, criamos nosso catálogo:

criação do catálogo

Definimos que o catálogo será o padrão (“default”) e não terá sensibilidade a acentos (“accent insensitive”):

configuração do catálogo

Depois de criado o catálogo, abra as propriedades e no menu Tables/Views, adicione as tabelas que serão indexadas, a chave única ou primária, as colunas e os idiomas utilizados na indexação. Por fim, defina “Track changes” com automático.

configurando tabelas e campos

Criado o catálogo, adicione os registros na sua tabela:

INSERT INTO Textos VALUES
('Azul', 'Modelo de texto'),
('Verde', 'Segundo texto modelo'),
('Vermelho', 'Terceiro texto modelo'),
('Amarelo', 'Modelo'),
('Preto', 'Dados complementares de livros não lidos'),
('Branco', 'Leitura não obrigatória'),
('Azulado', 'Textos obrigatórios'),
('Azuis', 'Textos obrigatórios'),
('Verdes', 'Segunda versão dos textos'),
('Vermelha', 'Literatura'),
('Negro', 'Dados complementares de livros lidos'),
('Claro', 'Leitura obrigatória')

Depois execute suas primeiras consultas que substituirão o “Campo LIKE ‘%valor%’”:

SELECT * FROM Textos WHERE CONTAINS(Nome, 'texto')

SELECT * FROM Textos WHERE CONTAINS(Texto, 'texto')

substituindo o LIKE %% por Full-Text Search

Como o FTS é preenchido em um processo assíncrono, talvez demore um pouco para as palavras serem indexadas, e alguns fragmentos dos textos podem ser desconsiderados, como artigos, advérbios e pronomes.

O FTS possui duas funções básicas para as pesquisas, CONSTAINS e a FREETEXT, que têm sintaxes semelhantes, mas podem realizar tarefas bem diferentes, as quais eu explicarei no próximo artigo.

Please follow and like us:

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.