O Full-Text Search é um serviço do SQL Server 2000 que fornece um suporte eficiente para busca de palavras ou frases em colunas baseadas em caracteres do tipo char,nchar, text, ntext,varchar e nvarchar. Também oferece suporte a busca de palavras ou frases em documentos do Office (.doc, .xls, . ppt), arquivos .txt e htm. Esta busca se dá através de filtros fornecidos pelo SQL Server 2000.
O Full-Text Search é instalado por padrão durante uma instalação típica do SQL Server 2000 e está disponíveis nas edições Standard e Enterprise. Ele consiste de dois componentes básicos:
Full-text indexing: Deixa você criar e popular os catálogos (Full-text Catalogs), os quais são mantidos fora do SQL Server e gerenciados pelo Microsoft Search Service.
Full-text search: Permite que você realize consultas nos catálogos utilizando os quatro operadores T-SQL (CONTAINS, CONTAINSTABLE, FREETEXT, FREETEXTTABLE).
O Full-Text Index é mantido em catálogos chamados full-text catalogs. Cada banco de dados pode conter um ou mais full-text catalogs que por sua vez, não podem pertencer a múltiplos bancos. Cada catálogo pode conter full-text indexes para uma ou mais tabelas de um dado banco de dados.
O principal requisito de desenvolvimento para full-text indexing, consultas e sincronização do catálogo, é a presença de uma coluna de chave única ou primária em todas as tabelas que serão registradas para full-text search. Esta chave única deve ser composta por um único campo da tabela.
Como Funciona
Internamente, o SQL Server envia uma condição de pesquisa para o Microsoft Search Service. O Microsoft Search Service localiza todas as chaves que satisfazem a condição de pesquisa e retorna estas chaves para o SQL Server que usa a lista de chaves para determinar quais linhas da tabela serão processadas.

Ambientes Aplicáveis
Interface de busca para ambientes de internet/Intranet
Busca em catálogo de produtos
Gerenciamento de documentos
Interface de busca para ambientes de Data Warehouse/Bisiness Intelligence (DW/DI)
Qualquer aplicação que requeira uma busca flexível, possivelmente combinando dados do SQL com documentos baseados em arquivos.
Permissões Necessárias
Para criação e manutenção: sysadmin ou db_owner do banco que está sendo ativado para full-text indexes.
Para utilização: O usuário deve possuir permissão SELECT na tabela que esta abilita para full-text indexes.
Pontos Pós
Fácil instalação e configuração
Possui filtros para arquivos de extensões .doc, .xls, .ppt, .txt e .htm
Suportado em ambiente Cluster
Clientes com Windows 95/98/NT workstation podem acessar full-text search
Pontos Contra
O Microsoft Search Service roda no contexto da conta Local System (Local System Account) do Windows. Durante a instalação, o SQL adiciona esta conta com administrador do serviço Microsoft Search e todas as alterações nas informações da conta de serviço do SQL Server devem ser feitas utilizando a caixa de diálogo Propriedades do SQL Server no Enterprise Manager.
Não é suportado através de linked-server
Full-text catalogs e indexes não são armazenados no banco de dados aos quais pertencem. Eles são mantidos como uma coleção de arquivos e diretórios, os quais devem residir no disco rígido local associado com a instância do SQL Server (Localização padrão MSSQL/FTDATA) e são gerenciados pelo Microsoft Search Service.

Full-text catalogs e indexes não são backupeados juntamente com o banco de dados e não podem ser backupeados ou restaurados utilizando os comandos BACKUP e RESTORE do SQL Server.
Os arquivos de catálogos (Full-text catalogs) não são recuperados durante uma operação de recuperação ou restauração de um banco de dados. Eles devem ser resincronizados após estas operações.
Em bancos de dados marcados como SUSPECT, a restauração de um backup utilizando a opção WITH REPLACE pode fazer com que o full-text catalog seja perdido. Isto acontece porque ao restaurar o backup de um banco que possui o status de SUSPECT, o SQL Server exclui o banco antes de restaurá-lo e ao excluir o banco, exclui também o catálogo. Como o full-text catalog não faz parte do backup do banco de dados, ele não pode ser restaurado com o banco de dados.
Os arquivos com extensões .doc, .xls, .ppt, .txt e .htm devem ser armazenados em colunas com o tipo de dados imagem e as respectivas extensões devem ser armazenadas em colunas separadas na tabela (Esta coluna pode possuir qualquer tipo de dados).
Para full-text indexing, um documento deve ter um tamanho máximo de 16MB e não pode conter mais que 256Kb de texto filtrado.
A cada alteração nos dados ou estrutura da tabela, é necessário recarregar o catálogo.
Teste de Performance
A carga ou recarga do catálogo pode levar várias horas dependendo do tamanho da tabela. Em testes realizados em uma tabela com 46.500 registros os resultados foram os seguintes:
Tempo médio de Utilização do processador: 85% sendo que durante +/- 3 min sua utilização ficou constante em 100%.
Tempo gasto para efetuar a carga do catálogo: 16:35 min
Paginações por Segundo: 23.000
Espaço em disco ocupado pelo catálogo: 23.2 MB
Espaço em disco ocupado pelo catálogo ainda vazio: 6.9 MB
Comparação com o comando LIKE:

Nota: Este teste indica que para uma tabela com até 46.500 linhas, o comando LIKE ainda é melhor.
Teste Microsoft
Full-text queries são mais rápidas que consultas usando LIKE %Test%
Full-text indexing ou carregamento do full-text catalog deve ser feito durante períodos de baixa utilização do servidor.
Full-text indexing de tabelas com mais que 4 milhões de linhas pode levar várias horas ou dias para completar.
Comparação com o comando LIKE considerando uma tabela com aproximadamente 150.000 linhas

Considerações
Em ambiente cluster, uma instância do SQL Server deve ser executada sobre uma mesma conta de usuário em todos os nós do cluster como requisito para que o full-text queries funcione apropriadamente.
Alterações na conta de serviço que inicia os serviços do SQL Server 2000 em cluster devem ser efetuadas através do Enterprise Manager. Se utilizar o painel de controle ou o aplicativo Service no Windows 2000, a configuração de full-text para o SQL Server será quebrada.
Para saber sobre as novidades e melhorias no Full-Text Search do SQL Server 2005, visite o link http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sql2005ftsearch.asp
No próximo artigo veremos como implementar e utilizar o Full-Text Search no SQL Server 2000.
Um abraço a todos
Nilton Pinheiro

