sys.dm_fts_index_keywords_by_document (Transact-SQL)

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed Instancebase de dados SQL em Microsoft Fabric

Devolve informação sobre o conteúdo ao nível do documento de um índice de texto completo associado à tabela especificada.

sys.dm_fts_index_keywords_by_document é uma função de gestão dinâmica.

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 . DB_ID é inteligência. Esta função aceita um nome de base de dados e devolve o ID da base de dados, que sys.dm_fts_index_keywords_by_document serve para encontrar a base de dados especificada. Se database_name for omitido, o ID atual da base de dados é devolvido.

OBJECT_ID('table_name')

Uma chamada para a função OBJECT_ID . OBJECT_ID é inteligência. Esta função aceita um nome de tabela e devolve o ID da tabela que contém o índice de texto completo para inspecionar.

Tabela retornada

Nome da coluna Tipo de dados Anulável Descrição
keyword 1 varbinary(128) No A representação hexadecimal da palavra-chave que está armazenada no índice do texto completo.
display_term 1 nvarchar(4000) No O formato legível para humanos da palavra-chave. Este formato deriva do formato interno que é armazenado no índice de texto completo.
column_id int No ID da coluna a partir da qual a palavra-chave atual foi indexada em texto completo.
document_id bigint Sim ID do documento ou linha de onde o termo atual foi indexado em texto completo. Este ID corresponde ao valor da chave em texto completo desse documento ou linha.
occurrence_count int Sim Número de ocorrências da palavra-chave atual no documento ou linha indicada por document_id. Quando 'search_property_name' é especificado, occurrence_count mostra apenas o número de ocorrências da palavra-chave atual na propriedade de pesquisa especificada dentro do documento ou linha.

10xFF representa o carácter especial que indica o fim de um ficheiro ou conjunto de dados.

Observações

A informação detida sys.dm_fts_index_keywords_by_document é útil para descobrir o seguinte, entre outras coisas:

  • 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 em todo o índice de texto completo. Ou seja, SUM(occurrence_count) WHERE keyword = <keyword_value>
  • Quantas vezes uma palavra-chave aparece num determinado documento ou linha.
  • Quantas palavras-chave contém um determinado documento ou linha.

Além disso, pode também usar a informação fornecida para sys.dm_fts_index_keywords_by_document recuperar todas as palavras-chave pertencentes a um determinado documento ou linha.

Quando a coluna da chave do texto completo é um tipo de dado inteiro, como recomendado, a document_id chave corresponde diretamente ao valor da chave do texto completo na tabela base.

Em contraste, quando a coluna da chave do texto completo usa um tipo de dado não inteiro, document_id não representa a chave do texto completo na tabela base. Neste caso, para identificar a linha na tabela base que é devolvida por dm_fts_index_keywords_by_document, é necessário juntar esta vista aos resultados devolvidos por sp_fulltext_keymappings.

Antes de os poder juntar, deve armazenar a saída do procedimento armazenado numa tabela temporária. Depois pode juntar a document_id coluna de dm_fts_index_keywords_by_document com a DocId coluna que é devolvida por este procedimento armazenado. Uma coluna de carimbo temporal não pode receber valores no momento da inserção, porque são gerados automaticamente pelo SQL Server. Portanto, a coluna de carimbo temporal deve ser convertida para colunas varbinary(8 ). O exemplo seguinte mostra estes passos. Neste exemplo, @table_id é o ID da sua tabela, database_name é o nome da sua base 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 AS INT = DB_ID(N'database_name');
DECLARE @table_id AS INT = OBJECT_ID(N'table_name');

INSERT INTO #MyTempTable
EXECUTE sp_fulltext_keymappings @table_id;

SELECT *
FROM sys.dm_fts_index_keywords_by_document(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Requer SELECT permissão nas colunas cobertas pelo índice de texto integral e CREATE FULLTEXT CATALOG permissões.

Exemplos

A. Exibir o conteúdo do índice de texto completo ao nível do documento

O exemplo seguinte apresenta o conteúdo do índice de texto completo ao nível do documento na HumanResources.JobCandidate tabela da AdventureWorks2025 base de dados de exemplo.

Note

Pode criar este índice executando o exemplo fornecido para a HumanResources.JobCandidate tabela em CREATE FULLTEXT INDEX.

SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO