quarta-feira, 25 de agosto de 2010

FULL TEXT SEARCH no Microsoft SQL

Ative a feature de Full Text Search na instalação do SQL



Depois da instalação, verifique se o serviço esta ativo:
Execute o comando services no prompt do windows e procure pelo nome
SQL Full–text- Filter Daemon Launcher – Status deve estar em Iniciado/Started

No SQL Server Mangement Studio, Selecione o Banco...
Na pasta Storage, Sub Pasta Full text Catalogs ... Botão da direita do mouse
Clique em New Full-Text Catalog...

Defina o nome para o catalogo, marque como padrão e o modo sobre acentuação.


Ou via Comando…


USE [Northwind]

GO

CREATE FULLTEXT CATALOG [FullTextCatalogo]
WITH
ACCENT_SENSITIVITY = ON AS
DEFAULT
GO

Depois de criado o catalogo, clique com o botão da esquerda do mouse
sobre o catalogo e selecione propriedades


Na pagina Tables/Views
Selecione uma tabela e clique para ficar na área das tabelas selecionadas,
Marque ligar o full text na tabela
Selecione os campos do tipo texto para fazer parte do full text search,
e defina qual língua este campo de texto vai conter
Selecione o modo automático de alteração.
A tabela precisa ter uma PK ou Índice Único.

Na pagina Population Schedule você define
como o SQL vai atualizar o Full Text Search.

Clique em NEW para criar um agendamento.


Determine um nome, tipo de agendamento, frequência, e inicio...


Atulização do Text Full Search, não acontece quando há alteração nos campo atribuídos.
O processo deve ser agendado como mostrado anteriormente
ou manualmente clicando com botão da direita sobre o catalogo e selecionando REBULD.



Abaixo alguns exemplos de uso sobre a tabela que foi definida.

Não deixe de ver o Book´s on Line do SQL sobre o comando CONTAINS e FREETEXT

-- So a palavra

select * from Categories where CONTAINS(Description , 'pasta');

-- Prefixo, Sufixo e OR

select * from Categories where CONTAINS(Description , '"bre*" OR ","');

-- Desserts proximo a and

select * from Categories where CONTAINS(Description, 'Desserts NEAR and');

-- Semelhantes

select * from Categories where CONTAINS(Description, ' FORMSOF (INFLECTIONAL, breads) ');


-- FREETXT, como no Google... :-)

select * from Categories WHERE FREETEXT (Description, 'breads cheeses' );

Nenhum comentário: