Partilhar via


sys.dm_fts_index_keywords_by_document (Transact-SQL)

Retorna informações sobre o conteúdo no nível de documento de um índice de texto completo para a tabela especificada. Uma determinada palavra-chave pode aparecer em vários documentos.

sys.dm_fts_index_keywords_by_document é uma função de gerenciamento dinâmico.

ObservaçãoObservação

Para exibir informações de índice de texto completo do nível mais alto, no nível de palavra-chave, use a função de gerenciamento dinâmico sys.dm_fts_index_keywords (Transact-SQL).

Sintaxe

sys.dm_fts_index_keywords_by_document( DB_ID('database_name'), OBJECT_ID('table_name') )

Argumentos

  • db_id('database_name')
    Uma chamada para a função DB_ID (). Essa função aceita um nome de banco de dados e retorna a ID do banco de dados, que sys.dm_fts_index_keywords_by_document usa para localizar o banco de dados especificado. Se database_name for omitido, a ID do banco de dados atual será retornada.

  • object_id('table_name')
    Uma chamada para a função OBJECT_ID (). Essa função aceita um nome de tabela e retorna o identificador da tabela que contém o índice de texto completo que será inspecionado.

Tabela retornada

Coluna

Tipo de dados

Descrição

keyword

nvarchar(8000)

A representação hexadecimal da palavra-chave armazenada no índice de texto completo.

ObservaçãoObservação
OxFF representa o caractere especial que indica o término de um arquivo ou conjunto de dados.

display_term

nvarchar(8000)

O formato legível da palavra-chave. Esse formato é derivado do formato interno, que é armazenado no índice de texto completo.

ObservaçãoObservação
OxFF representa o caractere especial que indica o término de um arquivo ou conjunto de dados.

column_id

int

A ID da coluna a partir da qual a palavra-chave atual foi indexada com texto completo.

document_id

int

A ID do documento ou linha a partir da qual o termo atual foi indexado com texto completo. Essa ID corresponde ao valor da chave de texto completo desse documento ou linha.

occurrence_count

int

Número de ocorrências da palavra-chave atual no documento ou linha indicado por document_id.

Comentários

Entre outras coisas, as informações retornadas por sys.dm_fts_index_keywords_by_document são úteis para localizar:

  • O número total de palavras-chave que um índice de texto completo contém.

  • Se uma palavra-chave faz parte de um determinado documento ou linha.

  • Quantas vezes uma palavra-chave aparece no índice de texto completo inteiro; ou seja:

    (SUM(occurrence_count) WHERE keyword=keyword_value )

  • Quantas vezes uma palavra-chave aparece em um determinado documento ou linha.

  • Quantas palavras-chave um determinado documento ou linha contém.

Além disso, é possível usar as informações fornecidas por sys.dm_fts_index_keywords_by_document para recuperar todas as palavras-chave que pertencem a um determinado documento ou linha.

Quando a coluna de chave de texto completo é um tipo de dados inteiro, como recomendado, o document_id mapeia diretamente no valor da chave de texto completo da tabela base.

Ao contrário, quando a coluna de chave de texto completo usa um tipo de dados não-inteiro, o document_id não representa a chave de texto completo da tabela base. Neste caso, para identificar a linha na tabela base que é retornada pelo dm_fts_index_keywords_by_document, você precisa unir a exibição com os resultados retornados pelo sp_fulltext_keymappings. Antes de uni-los, é necessário armazenar a saída do procedimento armazenado em uma tabela temporária. Depois, você poderá unir document_id column de dm_fts_index_keywords_by_document com a coluna DocId que é retornada por este procedimento armazenado. Observe que uma coluna timestamp não pode receber valores na hora da inserção, porque eles são gerados automaticamente pelo SQL Server. Sendo assim, a coluna timestamp deve ser convertida em colunas varbinary(8). O exemplo a seguir mostra estas etapas. Neste exemplo, table_id é a ID da sua tabela, database_name é o nome do seu banco de dados e table_name é o nome da sua tabela.

USE database_name;
GO
CREATE TABLE #MyTempTable 
   (
      docid INT PRIMARY KEY ,
      [key] INT NOT NULL
   );
DECLARE @db_id int = db_id(N'database_name');
DECLARE @table_id int = OBJECT_ID(N'table_name');
INSERT INTO #MyTempTable EXEC sp_fulltext_keymappings @table_id;
SELECT * FROM sys.dm_fts_index_keywords_by_document 
   ( @db_id, @table_id ) kbd
   INNER JOIN #MyTempTable tt ON tt.[docid]=kbd.document_id;
GO

Permissões

Requer permissões CREATE FULLTEXT CATALOG e a permissão SELECT nas colunas abrangidas pelo índice de texto completo.

Exemplos

A. Exibindo o conteúdo do índice de texto completo no nível de documento

O exemplo a seguir exibe o conteúdo do índice de texto completo no nível do documento na tabela HumanResources.JobCandidate do banco de dados de exemplo AdventureWorks.

ObservaçãoObservação

Você pode criar esse índice executando o exemplo fornecido para a tabela HumanResources.JobCandidate em CREATE FULLTEXT INDEX (Transact-SQL).

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks'), 
object_id('HumanResources.JobCandidate'));
GO