Artigo SQL Magazine 44 - SQL Server 2005 Full-Text Search (Parte II) - Configurando o Full-Text Search para português e pesquisando em documentos

Artigo da Revista SQL Magazine - Edição 44.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Banco de Dados

 

SQL Server 2005 Full-Text Search (Parte II)

Configurando o Full-Text Search para português e pesquisando em documentos

 

Na primeira parte deste artigo (veja SQL Magazine edição 41) vimos que o suporte à linguagem Transact-SQL fornecido pelo SQL Server permite que você realize pesquisas em dados armazenados em colunas do tipo char, nchar, varchar, nvarchar, text e ntext. No entanto, o grande problema é quando você precisa pesquisar frases ou palavras em documentos, ou pesquisar não apenas por uma palavra ou frase exata, mas também por suas variantes verbais (exemplo: correr, correndo, correu). Vimos então que o Full-Text Search é a solução para estes problemas.

No artigo anterior também descrevemos passo-a-passo como instalar o Full-Text no SQL Server 2005, configurá-lo em um banco de dados, criar e administrar catálogos e índices full-text usando o SQL Server Management Studio, e ainda como realizar pesquisas utilizando os predicados CONTAINS, CONTAINSTABLE, FREETEXT e FREETEXTTABLE.

Quem possui a edição Advanced Services do SQL Server Express e já tentou criar índices Full-Text via tela gráfica, certamente teve uma triste surpresa. Isso porque infelizmente a interface gráfica para criação ou administração dos catálogos full-text não está disponível nesta edição. Entretanto, os catálogos e índices full-text também podem ser criados através dos novos comandos DDL que estão disponíveis em qualquer edição do SQL Server 2005. Sendo assim, neste artigo será mostrado como configurar e administrar o Full-Text, catálogos e índices usando comandos Transact-SQL através do Query Editor. Partiremos então para tópicos mais avançados e veremos como configurar o Full-Text para trabalhar com o idioma português (uma necessidade comum já que nossos dados estão armazenados no idioma português), como configurá-lo para realizar pesquisas em documentos .pdf – incluindo a instalação do filtro para pdf, e o passo-a-passo de como pesquisar por palavras ou frases em documentos – uma das principais funcionalidades do Full-Text Search.

 

Criando índices e catálogos Full-Text via Transact-SQL

No artigo anterior vimos que, antes de configurar o Full-Text em um banco de dados, é preciso primeiramente ativá-lo para suporte ao Full-Text. No SQL Server 2005, podemos criar um índice full-text para uma tabela usando tanto o SQL Server Management Studio (SSMS) ou os novos comandos de DDL do SQL Server 2005. No primeiro artigo da série vimos como fazer isso usando o SSMS. Neste artigo veremos como fazer isso usando as novas DDL do SQL Server 2005. Veremos que quando criamos o banco de dados utilizando o comando CREATE DATABASE através do Query Editor (estarei utilizando o Query Editor nos exemplos deste artigo) ou qualquer outra ferramenta de execução de scripts Transact-SQL, o banco de dados é automaticamente ativado para o suporte ao Full-Text, diferente do que acontece quando o criamos através do SSMS.

Para aqueles que possuem maior intimidade com o Query Editor ou não possui acesso à ferramenta gráfica de configuração do full-text, as tarefas de verificação, ativação e desativação do Full-text em um banco de dados podem ser executadas através de um conjunto de comandos Transact-SQL, conforme apresentado na Listagem 1.

 

Listagem 1. Script para ativar, desativar e verificar o status do Full-Text no banco de dados.

-- Verifica se o banco está ativado para Full-Text

-- 0 = Não ativado para Full-text

-- 1 = Ativado para Full-text

SELECT DATABASEPROPERTY('AdventureWorks','IsFulltextEnabled') AS IsFulltextEnabled

 

-- Ativa o banco de dados para Full-Text

USE AdventureWorks

GO

sp_fulltext_database 'enable'

 

-- Desativa o Full-Text no banco de dados

USE AdventureWorks

GO

sp_fulltext_database 'disable'

 

Devemos lembrar que como parte da criação de um índice full-text, devemos especificar um banco de dados que esteja ativado para full-text search, uma tabela (ou tabelas) e a coluna (ou colunas) que formarão o índice full-text. No mais, somente colunas do tipo char, nchar, varchar, nvarchar, text, ntext, image, xml e varbinary(max) podem ser indexadas para full-text search. Como exemplo, vamos usar neste artigo a mesma tabela do artigo anterior, criando índices full-text sobre as colunas DocumentSummary e Document da tabela Production.Document do banco de dados AdventureWorks. A estrutura da tabela é apresentada na Listagem 2.

Observe que a tabela mantém os requisitos necessários para a criação de um índice full-text: possui uma chave primária PK_Document_DocumentID (linha 15) que é composta apenas pela coluna DocumentID e as demais colunas possuem os tipos de dados apropriados, sendo a Document do tipo varbinary(max). Esta será a coluna que usaremos para armazenar os documentos e posteriormente executar as pesquisas.

 

Listagem 2. Estrutura da tabela Production.Document .

1. CREATE TABLE [Production].[Document](

2.[DocumentID] [int] IDENTITY(1,1) NOT NULL,

3.[Title] [nvarchar](50) NOT NULL,

4.[FileName] [nvarchar](400) NOT NULL,

5.[FileExtension] [nvarchar](8) NOT NULL,

6.[Revision] [nchar](5) NOT NULL,

7. [ChangeNumber] [int] NOT NULL CONSTRAINT [DF_Document_ChangeNumber]

8. DEFAULT ((0)),

9. [Status] [tinyint] NOT NULL CONSTRAINT [CK_Document_Status] CHECK 

10. (([Status]>=(1) AND [Status]<=(3))),

"
[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados