Sei sulla pagina 1di 15

Banco de Dados II Resumo sobre Full-Text Search Prof Silvio F.

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.

UCS Banco de Dados II Prof. Silvio F. Angonese

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.

UCS Banco de Dados II Prof. Silvio F. Angonese

5. IMPLEMENTAO DO FULL-TEXT SEARCH NO SQL SERVER 2005 5.1. CRIAO DA TABELA

UCS Banco de Dados II Prof. Silvio F. Angonese

5.2. CRIAO DOS NDICES

UCS Banco de Dados II Prof. Silvio F. Angonese

5.3. IDENTIFICAO DA CHAVE PRIMRIA

UCS Banco de Dados II Prof. Silvio F. Angonese

5.4. SELEAO DOS ATRIBUTOS A SEREM INDEXADOS

UCS Banco de Dados II Prof. Silvio F. Angonese

5.5. DEFINIO DO CATLOGO

UCS Banco de Dados II Prof. Silvio F. Angonese

5.6. CRIAO DE UM JOB DE ATUALIZAO DOS NDICES

UCS Banco de Dados II Prof. Silvio F. Angonese

5.7. DESCRIO DOS COMPONENTES DO FULL-TEXT SEARCH

UCS Banco de Dados II Prof. Silvio F. Angonese

5.8. ATUALIAO EFETIVA DO CATLOGO E DOS NDICES

UCS Banco de Dados II Prof. Silvio F. Angonese

10

5.9. RECURSOS DE MANUTENO DO FULL-TEXT INDEX

UCS Banco de Dados II Prof. Silvio F. Angonese

11

5.10.

CONSULTAS UTILIZANDO A SINTAXE DA FULL-TEXT SEARCH

UCS Banco de Dados II Prof. Silvio F. Angonese

12

UCS Banco de Dados II Prof. Silvio F. Angonese

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:

SP_FULLTEXT_SERVICE load_os_resources, 1 GO SP_FULLTEXT_SERVICE verify_signature, 0

UCS Banco de Dados II Prof. Silvio F. Angonese

14

Aps isto possvel fazer consultas conforme o exemplo:

--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.

UCS Banco de Dados II Prof. Silvio F. Angonese

15

Potrebbero piacerti anche