Partilhar via


Analisando as alterações feitas à pesquisa de texto completo no SQL Server

Este tópico descreve alterações recentes feitas na pesquisa de texto completo. Essas alterações podem danificar aplicativos, scripts ou funcionalidades baseados em versões anteriores do SQL Server. Talvez você encontre esses problemas ao atualizar. Para obter mais informações, consulte Usando o Supervisor de Atualização para preparar para atualizações.

Alterações de interrupção

As alterações de interrupção a seguir se aplicam à Pesquisa de Texto Completo no SQL Server 2008.

Recurso

Cenário

SQL Server 2005

SQL Server 2008

CONTAINSTABLE com tipos definidos pelo usuário (UDTs)

A chave de texto completo é um tipo definido pelo usuário do SQL Server, por exemplo, MyType = char(1).

A chave retornada é do tipo atribuído ao tipo definido pelo usuário.

No exemplo, seria char(1).

A chave retornada é do tipo definido pelo usuário. No exemplo, seria MyType.

Parâmetro top_n_by_rank (das instruções Transact-SQL CONTAINSTABLE e FREETEXTTABLE)

Consultas top_n_by_rank que usam 0 como o parâmetro.

Falha com uma mensagem de erro, indicando que você deve usar um valor maior que zero.

Tem êxito, não retornando nenhuma linha.

CONTAINSTABLE e ItemCount

Excluir linhas da tabela base antes do envio por push de alterações para MSSearch.

CONTAINSTABLE retorna registro fantasma. ItemCount não é alterado.

CONTAINSTABLE não retorna nenhum registro fantasma.

FREETEXT ou FREETEXTTABLE

Procurando uma frase exata.

Se a cadeia de pesquisa (freetext_string) for colocada entre aspas duplas, a lematização e a pesquisa no dicionário de sinônimos não serão executadas, e a cadeia retornará apenas correspondências exatas, como se fosse uma pesquisa de frase. Por exemplo, se você especificar "entregas rápidas" em um predicado de FREETEXT, somente linhas que tiverem esse termo serão retornadas. A frase "entregar o pacote rapidamente" não seria retornada.

Pesquisas de frase não são mais permitidas por FREETEXT e FREETEXTTABLE, que executam lematização e pesquisas no dicionário de sinônimos, quer a cadeia de pesquisa esteja entre aspas simples ou duplas. Por exemplo, se você pesquisar por "entregas rápidas", os resultados incluirão "entregas rápidas" e "entrega rápida do pacote".

Para pesquisar em uma frase, use CONTAINS ou CONTAINSTABLE.

ItemCount

A tabela contém colunas de tipo ou documentos nulos.

Além de documentos indexados, os documentos que são nulos ou que têm tipos nulos são contados no valor ItemCount.

Somente documentos indexados são contados no valor ItemCount.

ItemCount do catálogo

Coluna blob com uma extensão NULL.

É contada em ItemCount do catálogo

Não é contada em ItemCount do catálogo.

UniqueKeyCount

Consultar uma contagem de chave exclusiva a partir de um catálogo, por exemplo, duas tabelas (table1 e table2) em que cada uma tem três palavras: word1, word2 e word3.

UniqueKeyCount = 9. A tabela a seguir resume como esse valor é obtido:

table1 = 3

EOF para índice de texto completo de table1 = 1

table2 = 3

EOF para índice de texto completo de table2 = 1

catálogo de texto completo = 1

Para cada tabela, UniqueKeyCount é o número de palavras-chave distintas + 1 (0xFF). Isso NÃO trata as mesmas palavras em > 1 doc como uma nova chave exclusiva.

Para um catálogo, UniqueKeyCount é a soma de UniqueKeyCount de cada uma das tabelas no catálogo. Palavras idênticas de tabelas diferentes são tratadas como chaves exclusivas. Nesse caso, a contagem de chaves exclusivas é 8.

Opção no nível de servidor classificação pré-computada

Otimização do desempenho de consultas FREETEXTTABLE.

Quando a opção é definida como 1, as consultas FREETEXTTABLE especificadas com top_n_by_rank usam dados de classificação pré-computada armazenados nos catálogos de texto completo.

Não tem suporte.

sp_fulltext_pendingchanges ao atualizar coluna-chave

Atualizar a coluna-chave de texto completo em uma linha de uma tabela de 2 linhas e executar sp_fulltext_pendingchanges.

As duas linhas aparecem.

Somente uma linha aparece.

Funções embutidas

Funções embutidas com um operador de texto completo

Retorna uma mensagem de erro.

Retorna as linhas relevantes.

sp_fulltext_database

Habilitar ou desabilitar pesquisa de texto completo usando sp_fulltext_database.

Nenhum resultado é retornado para consultas de texto completo. Se o texto completo estiver desabilitado para o banco de dados, não serão permitidas operações de texto completo.

Retorna resultados para consultas de texto completo e operações de texto completo permitidas, mesmo se o texto completo estiver desabilitado para o banco de dados.

Palavras irrelevantes (stop words) específicas da localidade

Consultas emvariantes específicas da localidade de um idioma pai, como francês belga e francês canadense.

As consultas emvariantes específicas da localidade são processadas pelos componentes (separadores de palavras, lematizadores e palavras irrelevantes) de seu idioma pai. Por exemplo, os componentes de francês (França) são usados para analisar francês (Bélgica).

Você deve adicionar palavras irrelevantes explicitamente para cada identificador de localidade (LCID). Por exemplo, você precisaria especificar um LCID para Bélgica, Canadá e França.

Processo de lematização do dicionário de sinônimos

Usando o dicionário de sinônimos e formas flexivas (lematização).

Uma palavra do dicionário de sinônimos é lematizada automaticamente depois de sua expansão.

Se você deseja a forma lematizada na expansão, precisará adicionar explicitamente a forma lematizada.

Caminho de catálogo de texto completo e grupo de arquivos

Trabalhando com catálogos de texto completo.

Cada catálogo de texto completo tem um caminho físico e pertence a um grupo de arquivos. Ele é tratado como um arquivo de banco de dados.

Um catálogo de texto completo é um objeto virtual e não pertence a nenhum grupo de arquivos. Um catálogo de texto completo é um conceito lógico que faz referência a um grupo de índices de texto completo.

ObservaçãoObservação
As instruções DDL do SQL Server 2005Transact-SQL que especificam catálogos de texto completo funcionam corretamente.

sys.fulltext_catalogs

Usando o caminho, data_space_id e file_id dessa exibição de catálogo.

Essas colunas retornam um valor específico.

Essas colunas retornam NULL porque o catálogo de texto completo não mais está localizado no sistema de arquivos.

sys.sysfulltextcatalogs

Usando a coluna de caminho dessa tabela de sistema preterida.

Retorna o caminho do sistema de arquivos do catálogo de texto completo.

Retorna NULL porque o catálogo de texto completo não mais está localizado no sistema de arquivos.

sp_help_fulltext_catalogs

sp_help_fulltext_catalogs_cursor

Usando a coluna PATH desses procedimentos armazenados preteridos.

Retorna o caminho do sistema de arquivos do catálogo de texto completo.

Retorna NULL porque o catálogo de texto completo não mais está localizado no sistema de arquivos.

sp_help_fulltext_catalog_components

Usando sp_help_fulltext_catalog_components desse procedimento armazenado.

Retorna uma lista com todos os componentes (filtros, separadores de palavras e manipuladores de protocolo) usados em todos os catálogos de texto completo do banco de dados atual.

Retorna linhas vazias.

DATABASEPROPERTY e DATABASEPROPERTYEX

Usando a propriedade IsFullTextEnabled.

A configuração de IsFullTextEnabled indica se a pesquisa de texto completo está habilitada ou não em um determinado banco de dados.

O valor dessa coluna não tem nenhum efeito. Os bancos de dados de usuário são sempre habilitados para pesquisa de texto completo.

Histórico de alterações

Conteúdo atualizado

Linha adicionada à tabela sobre o recurso FREETEXT.