Introdução Palavras e Listas de palavras irrelevantes e Banco de Dados Recurso, no SQL Server 2008 e SQL Server 2008 R2.

Pessoal bom dia! Tudo bem com vocês?

Acredito que vocês podem não estar entendendo o título de artigo, não estou falando de Língua Portuguesa, muito menos sobre Dicionário Aurélio. Estou me referindo a um conceito novo introduzido no SQL Server 2008, para o recurso de Full Text Search, chamado de Lista de Palavras Irrelevantes.

Até o SQL Server 2005, quando trabalhávamos com o Full Text Search, o SQL Server criava uma relação de palavras denominadas, “Palavras de Ruído”, sendo estas, palavras consideradas um relação de itens que deveriam ser desconsiderados pelo SQL Server no momento da utilização do Full Text Search. Pois bem, a partir do SQL Server 2008 este conceito mudou muito, a Lista de Palavras de Ruído (stoplist) foi reclassificada e nomeada como Lista de Palavras Irrelevantes(stopwords).

Mas não foi somente isso que mudou, todos os arquivos gerados pelo SQL Server 2005 contendo as stoplist no SQL Server 2008 deixam de ser utilizadas, ficando armazenados na FTDATA\ FTNoiseThesaurusBak, como uma forma de manter este recurso compatível no momento de um downgrade, como também, quando for usá-los posteriormente no processo de atualização ou criação das listas de palavras irrelevantes correspondentes do SQL Server 2008.

Qual é realmente a finalidade das Stopwords ou Lista de Palavras Irrelevantes?

Para evitar que os índices de tabela full text fiquem lotados, o SQL Server dispõe de um mecanismo que descarta cadeias de caracteres que ocorrem com frequência e que não auxiliam nas pesquisas.

Justamente estas cadeias de caracteres descartados são como palavras irrelevantes (stopwords). Durante a criação do índice, o Mecanismo Full Text Search omite as palavras irrelevantes do índice de texto completo. Em outras palavras, as consultas Full Text Search não pesquisarão palavras irrelevantes.

Para o SQL Server uma palavra irrelevante, pode ser considerada uma palavra com signficado em um determinado idioma ou um token sem significado linguístico. Por exemplo, em inglês, palavras como “a”, “and”, “is” e “the” não são incluídas no índice Full Text, porque são consideradas inúteis em uma pesquisa.

Embora as palavras irrelevantes sejam ignoradas, o índice Full Text leva em conta sua posição. Por exemplo, considere a frase “Instructions are applicable to these Adventure Works Cycles models”. A Tabela 1, a seguir descreve a posição das palavras na frase: 

Palavra

Posição

Instructions 1
are 2
applicable 3
to 4
these 5
Adventure 6
Works 7
Cycles 8
Models 9

Com esta análise realizada, identificando a posição de cada palavra dentro de uma frase, o SQL Server identifica as palavras irrelevantes “are”, “to” e “these”, que estão nas posições 2, 4 e 5, como irrelevantes, sendo excluídas do índice de Full Text no momento da sua utilização. Contudo, sua informação posicional é mantida, sem afetar a posição das outras palavras da frase.

 

Listas de palavras irrelevantes

Como todo conceito ou funcionalidade nova, sempre existem diversas dúvidas, opiniões contrárias, relutantes e até críticas em relação à utilização deste recurso.

No SQL Server 2008, as palavras irrelevantes são gerenciadas nos bancos de dados por meio de objetos chamados listas de palavras irrelevantes (stoplists).

Uma lista de palavras irrelevantes é uma lista que, quando associada a um índice Full Text, é aplicada às consultas de Full Text Search desse índice.

Criando uma lista de palavras irrelevantes

Você pode criar uma lista de palavras irrelevantes de qualquer uma destas formas:

  1. Usando a lista de palavras irrelevantes fornecida pelo sistema no banco de dados. O SQL Server é fornecido com uma lista de palavras irrelevantes do sistema que contém as palavras irrelevantes usadas mais comumente para cada idioma com suporte, ou seja, para cada idioma associado a determinados separadores de palavras por padrão.

A lista de palavras irrelevantes do sistema contém palavras irrelevantes comuns para todos os idiomas com suporte. Você pode copiar essa lista e personalizar sua cópia adicionando e removendo palavras irrelevantes. A lista de palavras irrelevantes do sistema é instalada no banco de dados Resource.

  1. Criar sua própria lista de palavras irrelevantes e depois adicionando palavras irrelevantes a ela para qualquer idioma especificado. Você também pode descartar palavras irrelevantes da lista sempre que necessário.
  2. Usando uma lista de palavras irrelevantes personalizadas existentes de outro banco de dados na instância de servidor atual e, em seguida, adicionando ou descartando palavras irrelevantes conforme necessário.

Observação: Somente os bancos de dados com Nível de Compatibilidade 100, possuem a capacidade de reconhecer os comandos:

    • CREATE FULLTEXT STOPLIST;
    • ALTER FULLTEXT STOPLIST; E
    • DROP FULLTEXT STOPLIST.

No entanto, em todos os níveis de compatibilidade, a lista de palavras irrelevantes do sistema é associada automaticamente a novos índices de texto completo.

Como foi destacado anteriormente, as stoplists ficam armazenadas no Banco de Dados Resource. Para ajudar a entender um pouco sobre este banco, vou procurar responder algumas dúvidas:

O que é Banco de dados de Recursos?

O banco de dados Recurso é um banco de dados somente leitura que contém todos os objetos de sistema inclusos no SQL Server. Os objetos do sistema do SQL Server, como sys.objects, são fisicamente persistentes no banco de dados Recurso , mas eles aparecem logicamente no esquema sys de cada banco de dados. O banco de dados Recurso não contém dados de usuário ou metadados de usuário.

Posso utilizar o banco de Dados Recurso na Atualização de Versões do SQL Server?

O banco de dados Recurso torna a atualização para uma nova versão do SQL Server um procedimento mais fácil e mais rápido. Em versões anteriores do SQL Server, atualizar requeria o cancelamento e criação de objetos do sistema. Em razão do arquivo de banco de dados Recurso conter todos os objetos de sistema, uma atualização agora é obtida simplesmente ao se copiar o único arquivo de banco de dados Recurso para o servidor local. De forma semelhante, reverter alterações do objeto de sistema em um service pack só requer a versão atual do banco de dados Recurso com a versão mais antiga.

Quais são as Propriedades físicas do Recurso?

Os nomes dos arquivos físicos do banco de dados de Recursos são mssqlsystemresource.mdf e mssqlsystemresource.ldf.

Esses arquivos estão localizados em <unidade>:\Arquivos de Programas\Microsoft SQL Server\MSSQL10_50.<nome_da_instância> \MSSQL\Binn\. Vale ressaltar, que para cada instância do SQL Server existe apenas um arquivo mssqlsystemresource.mdf arquivo associado, e as instâncias não compartilham este arquivo.

Posso fazer backup e restauração do Banco de Dados Recurso?

O SQL Server não pode fazer backup do banco de dados Recurso. Você pode executar seu próprio backup baseado em arquivo ou baseado em disco ao tratar o arquivo mssqlsystemresource.mdf como se ele fosse um arquivo binário (.EXE) , em vez de um arquivo de banco de dados, mas você não pode usar o SQL Server para restaurar seus backups. Só é possível restaurar uma cópia de backup do mssqlsystemresource.mdf manualmente, e você deve ter cuidado para não sobrescrever o atual banco de dados Recurso com uma versão desatualizada ou potencialmente insegura.

Observação: Depois de restaurar um backup do mssqlsystemresource.mdf, você deve reaplicar qualquer atualização subsequente.

Como posso acessar o Banco de Dados Recurso?

O banco de dados Recurso só deve ser modificado por ou sob a orientação de um especialista do Serviço de Suporte Técnico da Microsoft (CSS). O ID do banco de dados de Recursos será sempre 32767.

Outros valores importantes associados ao banco de dados de Recursos são o número da versão e a última vez em que o banco de dados foi atualizado.

Para determinar o número de versão do banco de dados Recurso, podemos utilizar o seguinte código:

SELECT SERVERPROPERTY(‘ResourceVersion’);
GO

Para determinar quando o banco de dados Recurso foi atualizado pela última vez, podemos utilizar o seguinte código:

SELECT SERVERPROPERTY(‘ResourceLastUpdateDateTime’);
GO

Para acessar definições SQL dos objetos de sistema, utilize a função OBJECT_DEFINITION:

SELECT OBJECT_DEFINITION(OBJECT_ID(‘sys.objects’));
GO

Bom pessoal acredito, que esta pequena Introdução sobre Palavras e Lista de Palavras Irrelevantes e Banco de Dados Recurso pode ter apresentando um pouco de como este novo conceito esta sendo utilizado a partir do SQL Server 2008.

Nos próximos posts, volto com mais informções sobre Palavras e Listas de Palavras Irrelevantes, apresentando como podemos criar e utilizar esta funcionalidade.

Agradeço a sua atenção e visita ao meu blog.

Nos encontramos em breve.

Até mais.

Anúncios

Sobre Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes, bem como, Professor Titular na Fatec São Roque. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulações e Reconhecimentos: Microsoft MVP, MCC, MSTC e MIE.
Esse post foi publicado em Dicas, Mundo SQL Server, Scripts, SQL Server, VIRTUAL PASS BR e marcado , , , , , , , , , , . Guardar link permanente.

2 respostas para Introdução Palavras e Listas de palavras irrelevantes e Banco de Dados Recurso, no SQL Server 2008 e SQL Server 2008 R2.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s