Utilizando Full-Text Search - SQL Magazine 82
Neste artigo, abordaremos a funcionalidade disponível no SQL Server 2008 para pesquisas textuais conhecida como Full-Text Search, sua instalação e implementação. Além disso, veremos como desenvolver pesquisas textuais utilizando os predicados CONTAINS, CONTAINSTABLE, FREETEXT e FREETEXTTABLE, e utilizar a funcionalidade FILESTREAM para melhorar as pesquisas realizadas e o armazenamento de dados binários em tabelas.
Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Neste artigo, abordaremos a funcionalidade disponível no SQL Server 2008 para pesquisas textuais conhecida como Full-Text Search, sua instalação e implementação. Além disso, veremos como desenvolver pesquisas textuais utilizando os predicados CONTAINS, CONTAINSTABLE, FREETEXT e FREETEXTTABLE, e utilizar a funcionalidade FILESTREAM para melhorar as pesquisas realizadas e o armazenamento de dados binários em tabelas.
Para que serve:
Este artigo auxilia profissionais no desenvolvimento de pesquisas textuais mais inteligentes e eficientes através do Full-Text Search, não apenas demonstrando sua configuração e utilização como também a sua arquitetura e as melhoras práticas na utilização do Full-Text Search.
Em que situação o tema é útil:
No desenvolvimento de sistemas que acessam diversos tipos de informações textuais, incluindo documentos binários, e necessitam extrair informação de forma rápida, eficiente e com maior relevância dentro dos termos pesquisados.
A pesquisa baseada em palavras e frases é uma das principais características das ferramentas de buscas na web, como o Google, e dos sistemas de gerenciamento de documentos digitais. Para executar estas pesquisas de forma eficiente, muitos desenvolvedores criam aplicações extremamente complexas e que não possuem a inteligência necessária na procura de termos e frases nas colunas que armazenam textos e documentos digitais nas tabelas dos bancos de dados.
O que a grande maioria desses profissionais não conhece é que o SQL Server possui uma avançada ferramenta para pesquisas textuais, o Full-Text Search (FTS).
O FTS está presente no SQL Server desde a sua versão 7 e através da sua utilização é possível realizar pesquisas textuais tanto em colunas que armazenam caracteres como em colunas que armazenam documentos (por exemplo, documentos do Office e PDFs), em sua forma nativa.
Com opções como pesquisas por palavras e frases, reconhecimento de diferentes idiomas, derivação de palavras (por exemplo: jogar, jogou e jogando), possibilidade de desenvolver um dicionário de sinônimos, criação de resultados ranqueados e eliminação de palavras irrelevantes para a pesquisa, o FTS torna-se uma poderosa ferramenta para pesquisas textuais. Como principais fatores para a utilização das pesquisas textuais, temos:
- Os bancos de dados atuais são cada vez mais utilizados como repositórios de documentos digitais;
- O custo para o armazenamento de informações diminuiu consideravelmente, possibilitando o armazenamento de Gigabytes, Terabytes e até Petabytes;
- Novos tipos de documentos digitais são constantemente criados e os requisitos para seu armazenamento, e posterior pesquisa, estão cada vez maiores e mais complexos;
- Os desenvolvedores precisam de uma interface robusta e confiável para a realização de pesquisas textuais inteligentes.
O FTS possui grandes vantagens em relação a outras alternativas para pesquisas textuais, como por exemplo, o comando LIKE. As principais tarefas que podem ser realizadas com o FTS são:
- Realização de pesquisas textuais baseadas na linguística. Uma pesquisa linguística é baseada em palavras ou frases de um idioma específico, levando em consideração a conjugação de verbos, palavras derivadas, acentuação, entre outras características. Diferente do predicado LIKE, o FTS utiliza uma eficiente estrutura de indexação para realizar a pesquisa textual;
- Remoção automática de palavras irrelevantes informadas em uma pesquisa textual. Consideram-se palavras irrelevantes aquelas que não agregam qualidade para o resultado da pesquisa, como por exemplo: de, para, o, a, uma, um;
- Atribuição de pesos para os termos pesquisados, fazendo com que determinadas palavras sejam mais importantes do que outras dentro de uma mesma pesquisa textual;
- Geração de ranqueamento, possibilitando uma melhor visualização dos documentos que são mais relevantes de acordo com a pesquisa realizada;
- Indexação e pesquisa nos mais diversos tipos de documentos digitais. Com o FTS é possível realizar pesquisas em arquivos texto, planilhas, arquivos ZIP, entre outros.
Neste artigo será descrita a arquitetura do FTS, sua instalação e configuração, os principais comandos T-SQL utilizados na realização de pesquisas textuais, a utilização do FTS em conjunto com o FILESTREAM e também algumas técnicas para otimizar as pesquisas através do FTS.
Arquitetura do FTS
A arquitetura do FTS possui vários componentes trabalhando em conjunto com o processador de consulta do SQL Server para realizar pesquisas textuais de forma eficiente. A Figura 1 ilustra os principais componentes da arquitetura do FTS. Vejamos alguns deles:
- Consulta Cliente: A aplicação cliente envia as consultas textuais para o processador de consultas do SQL Server. É responsabilidade da aplicação cliente garantir que as consultas textuais estejam escritas da forma correta, seguindo a sintaxe do FTS;
- SQL Server Process (sqlservr.exe): O processo do SQL Server contém o processador de consulta e também a engine do FTS, que compila e executa as consultas textuais. A integração entre o processo do SQL Server e o FTS oferece um aumento de performance significativo ao SQL Server 2008 em relação a versões anteriores, pois permite que o processador de consultas monte planos de execução mais eficientes para as pesquisas textuais;
- Processador de consulta do SQL Server: O processador de consulta possui vários subcomponentes que são responsáveis por validar a sintaxe, compilar, gerar os planos de execução e executar as consultas SQL;
- Engine Full-Text: Quando o processador de consulta do SQL Server recebe uma consulta FTS, ele encaminha a requisição para a Engine FTS. A Engine FTS é responsável por validar a sintaxe da consulta FTS, verificar o índice full-text e então trabalhar em conjunto com o processador de consulta do SQL Server para retornar os resultados da pesquisa textual;
- Indexador: O indexador trabalha em conjunto com outros componentes para popular o índice full-text;
- Índice Full-Text: O índice full-text contém as palavras mais relevantes e suas respectivas posições dentro das colunas incluídas no índice;
- Stoplist: A stoplist é uma lista de palavras irrelevantes para a pesquisa textual. O indexador consulta a stoplist durante o processo de indexação e execução da pesquisa textual para eliminar as palavras que não agregam valor à pesquisa. Diferentemente de versões anteriores, o SQL Server 2008 armazena as stoplists dentro do próprio banco de dados, facilitando assim a sua administração;
- Thesaurus: O thesaurus é um arquivo XML (armazenado externamente ao banco de dados) no qual é possível definir uma lista de sinônimos que podem ser utilizados durante a pesquisa textual. A montagem do thesaurus precisa ser baseada no idioma que será utilizado na pesquisa. A engine full-text lê o arquivo thesaurus no momento da execução da pesquisa para verificar a existência de sinônimos que possam aumentar a qualidade e abrangência da mesma;
- Filter daemon host (fdhost.exe): É o responsável por gerenciar os processos de filtragem, word breaker e stemmer;
- SQL Full-Text Filter Daemon Launcher (fdlauncher.exe): É o processo que inicia o Filter daemon host (Fdhost.exe) quando a engine full-text necessita utilizar algum dos processos gerenciados pelo mesmo.
Figura 1. Arquitetura do FTS.
Para o melhor entendimento do processo de criação, utilização e manutenção da estrutura de índices full-text, é preciso também conhecer o significado de alguns conceitos importantes. São eles:
- Termo: A palavra, frase ou caractere utilizado na pesquisa textual;" [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo