Compartilhar via


sp_fulltext_keymappings (Transact-SQL)

Retorna mapeamentos entre identificadores de documento (DocIds) e valores de chaves de texto completo. A coluna DoclId contém um valor para um inteiro bigint que é mapeado para um valor de chave de texto completo específico em uma tabela indexada de texto completo. Os valores DocId que satisfazem uma condição de pesquisa são transmitidos do Mecanismo de Texto Completo para o Mecanismo de Banco de Dados, no qual eles são mapeados para valores de chave de texto completo da tabela base que está sendo consultada. A coluna de chave de texto completo é um índice exclusivo exigido em uma coluna da tabela. 

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_fulltext_keymappings { table_id | table_id, docid | table_id, NULL, key }

Parâmetros

  • table_id
    É a ID do objeto da tabela indexada de texto completo. Se você especificar uma table_id inválida, um erro será retornado. Para obter informações sobre como obter a ID de objeto de uma tabela, consulte OBJECT_ID (Transact-SQL).

  • docid
    É o identificador de um documento interno (DocId) que corresponde ao valor da chave. Um valor docid inválido não retorna nenhum resultado. Para obter informações sobre identificadores de documentos, consulte Estrutura de índice de texto completo.

  • key
    É o valor da chave de texto completo da tabela especificada. Um valor key inválido não retorna nenhum resultado. Para obter informações sobre valores de chave de texto completo, consulte Como perguntar sobre a coluna de chave de texto completo (Transact-SQL).

Observação importanteImportante

Para obter informações sobre como usar um, dois ou três parâmetros, consulte "Comentários", posteriormente neste tópico.

Valores do código de retorno

Nenhum.

Conjuntos de resultados

Nome da coluna

Tipo de dados

Descrição

DocId

bigint

É a coluna do identificador de documento (DocId) interno que corresponde ao valor da chave.

Chave

*

É o valor da chave de texto completo da tabela especificada.

Se nenhuma chave de texto completo existir na tabela de mapeamento, um conjunto de linhas vazio será retornado.

* O tipo de dados para Chave é o mesmo da coluna da chave de texto completo da tabela base.

Permissões

Esta função é pública e não requer permissões especiais.

Comentários

A tabela a seguir descreve o efeito de usar um, dois ou três parâmetros.

Esta lista de parâmetros...

Tem este resultado...

table_id

Quando invocado somente com o parâmetro table_id, sp_fulltext_keymappings retorna todos os valores de chave de texto completo (Chave) da tabela base especificada, juntamente com o DocId que corresponde a cada chave. Isso inclui as chaves que estão com exclusão pendente.

Essa função é útil para solucionar vários problemas. É especialmente útil para ver o conteúdo de índice de texto completo quando a chave de texto completo selecionada não é do tipo de dados de números inteiros. Isso envolve a junção de resultados de sp_fulltext_keymappings com os resultados de sys.dm_fts_index_keywords_by_document. Para obter mais informações, consulte sys.dm_fts_index_keywords_by_document (Transact-SQL).

Em geral, no entanto, recomendamos que, se possível, você execute sp_fulltext_keymappings com os parâmetros que especificam uma chave de texto completo específica ou DocId. Isso é muito mais eficiente do que retornar um mapa de chaves inteiro, especialmente para uma tabela muito grande para a qual o custo de desempenho de retornar um mapa de chaves inteiro pode ser substancial.

table_id, docid

Se somente table_id e docid forem especificados, docid deverá ser não NULL e especificar um DocId válido na tabela especificada. Essa função é útil para isolar a chave de texto completo personalizada a partir da tabela base que corresponde ao DocId de um índice de texto completo específico.

table_id, NULL, key

Se três parâmetros estiverem presentes, o segundo parâmetro deverá ser NULL e key deverá ser não NULL e especificar um valor de chave de texto completo válido a partir da tabela especificada. Essa função é útil no isolamento do DocId que corresponde a uma chave de texto completo específica da tabela base.

Um erro é retornado em qualquer uma das condições a seguir:

  • Você especifica um table_id inválido.

  • A tabela não está indexada por texto completo.

  • NULL é encontrado para um parâmetro que pode ser não NULL.

Exemplos

ObservaçãoObservação

Os exemplos desta seção usam a tabela Production.ProductReview do banco de dados de exemplo AdventureWorks2008R2. Você pode criar esse índice executando o exemplo fornecido para a tabela ProductReview em CREATE FULLTEXT INDEX (Transact-SQL).

A. Obtendo todos os valores de Chave e DocId

O exemplo a seguir usa uma instrução DECLARE para criar uma variável local, @table_id e para atribuir a ID da tabela ProductReview como seu valor. O exemplo executa sp_fulltext_keymappings especificando @table_id para o parâmetro table_id.

ObservaçãoObservação

O uso de sp_fulltext_keymappings somente com o parâmetro table_id é adequado para tabelas pequenas.

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

Esse exemplo retorna todas as DocIds e as chaves de texto completo da tabela, da seguinte maneira:

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B. Obtendo o valor de DocId para um valor de Chave específico

O exemplo a seguir usa uma instrução DECLARE para criar uma variável local, @table_id, e para atribuir a ID da tabela ProductReview como seu valor. O exemplo executa sp_fulltext_keymappings especificando @table_id para o parâmetro table_id, NULL para o parâmetro docid e 4 para o parâmetro key.

ObservaçãoObservação

O uso de sp_fulltext_keymappings somente com o parâmetro table_id é adequado para tabelas pequenas.

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

Esse exemplo retorna os seguintes resultados.

docid

key

4

4

4