Академический Документы
Профессиональный Документы
Культура Документы
Angonese
1. CONCEITO Uma necessidade comum em muitas aplicaes pesquisar por palavras ou frases, no apenas em colunas char ou varchar de um banco de dados, como tambm em textos armazenados em outras estruturas como arquivox .txt, .pdf, .doc, .xls e .xml. O que fazer quando precisamos pesquisar no somente por uma palavra exata, como faz o comando like, mas tambm por suas variantes verbais, por exemplo: correr, correndo, correu estando no singular ou no plural? Estas questes podem ser resolvidas utilizando o recurso de Full-Text Search.
2. MODELO SGBDs como o SQL Server 2005 possuem uma engine especfica para disponibilizar este recurso aos usurios, que deve ser habilitada no momento da instalao do produto. A recuperao dos textos est baseada em ndices full-text, que um tipo de ndice que armazena informaes sobre as palavras e suas respectivas localizaes dentro de uma coluna. Estas estruturas so conhecidas como catlogo, que deve ser nico para cada banco de dados. Na criao do banco de dados, tambm deve ser indicado que ele utilizar este recurso. Para o SQL Server 2005 basta marcar o checkbox Use Full-Text Indexing.
3. CATLOGO e NDICES O Full-Text Search Engine (MSFTESQL) consiste de dois componentes: O full-text index; O full-text catalog.
Estes so mantidos fisicamente como pastas e arquivos dentro de uma partio NTFS no disco local do servidor. Por padro no caminho \MSSQL.1\MSSQL\FTDATA.
Para criar um ndice full-text o SQL Server exige um ndice nico PK composto de apenas uma coluna. No pode ser uma chave composta de vrias colunas. Os ndices full-text podem ser atualizados: Automaticamente pelo SGBD no momento da ocorrncia da insero/alterao do dado; Manualmente ou em perodos agendados no SGBD; No gerada uma lista das alteraes nos dados indexados.
Para tabelas com milhes de registros as atualizaes de ndices podem ser muito demoradas. A criao de um ndice no semelhante a de uma tabela. Envolve a execuo de um wizard que conduz a criao e o processo de atualizao do ndice.
4. FUNES PARA PESQUISA DO TIPO FULL-TEXT A sintaxe do SQL fornece algumas funes adicionais para operar sobre os atributos definidos com o recurso de Full-Text: Contains permite realizar buscas exatas verificando se a palavra(s) ou frase pesquisada est contida em uma coluna. Pode ser utilizada palavras entre vrgulas para mltiplas selees ou os operadores OR, AND e AND NOT; ContainsTable semelhante ao contains, porm inclui uma coluna RANK, indicando o quanto a linha satisfaz aos critrios de pesquisa. a relevncia da tupla aos critrios da pesquisa; FreeText semelhante ao contains, porm deve ser usada para buscas no
exatas, como o contains. O engine quebra o texto em palavras e faz a pesquisa nas palavras e suas formas verbais variantes;
FreeTextTable semelhante ao freetext, porm adiciona a coluna RANK nos resultados, indicando as tuplas mais representativas.
10
11
5.10.
12
13
6. FUNES PARA PESQUISA EM ARQUIVOS .PDF, HTML As consultas Full-Text podem ser aplicadas tambm a colunas do tipo varbinary(max). Desta forma possvel ter em uma coluna os binrios de um arquivo PDF ou HTML, por exemplo. A instruo abaixo demonstra como isto possvel:
INSERT INTO DOCUMENTOS (Titulo, Filename, Extensao,Resumo, Documento) SELECT Exemplo de Full-Text em Arquivo PDF as Titulo, C:\Documentos\Exemplo.pdf as Filename, .pdf as Extensao, Este artigo demonstra como aplicar consultas Full-Text em arquivos as Resumo, * FROM OPENROWSET(BULK NC:\Documentos\Exemplo.pdf, SINGLE_BLOB) as Documento;
Para funcionar a pesquisa Full-Text com arquivos .PDF necessrio instalar um filtro para PDF, que deve ser baixado do site da Adobe e instalado. Aps isto ele deve ser ativado na instncia do SQL Server e retirada a obrigatoriedade da assinatura, conforme abaixo:
14
--Pesquisando pela exata frase SELECT Titulo, Filename FROM Documentos WHERE CONTAINS (Documento, Neste resumo trabalhamos com Full-Text) GO
--Pesquisando por qualquer uma das palavras que compem a frase SELECT Titulo, Filename FROM Documentos WHERE FREETEXT (Documento, Neste resumo trabalhamos com Full-Text) GO
--Pesquisando onde a frase aparece prxima a palavra coluna SELECT Titulo, Filename FROM Documentos WHERE CONTAINS (Documento, formato binrio NEAR coluna)
Este tipo de pesquisa Full-Text pode ser prejudicada pela seleo de palavras com pouca relevncia, para isto existe o recurso de cadastramento de Noise Words, que nada mais que um arquivo editvel, onde o usurio poder cadastrar palavras que o sistema dever desconsiderar das selees.
15