sys.dm_fts_index_keywords_by_document (Transact-SQL)
Aplica-se a: SQL Server PDW (Sistema de Plataforma de Análise) da Instância Gerenciada de SQL do Azure
Retorna informações sobre o conteúdo no nível de documento de um índice de texto completo associado à tabela especificada.
sys.dm_fts_index_keywords_by_document é uma função de gerenciamento dinâmico.
Para exibir informações de índice de texto completo de nível superior
Para exibir informações sobre o conteúdo no nível da propriedade relacionado a uma propriedade do documento
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 de 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 a ID da tabela que contém o índice de texto completo a ser inspecionado.
Tabela retornada
Coluna | Tipo de dados | Descrição |
---|---|---|
Palavra-chave | nvarchar(4000) | A representação hexadecimal da palavra-chave armazenada no índice de texto completo. Observação: OxFF representa o caractere especial que indica o final de um arquivo ou conjunto de dados. |
display_term | nvarchar(4000) | O formato legível da palavra-chave. Esse formato é derivado do formato interno, que é armazenado no índice de texto completo. Observação: OxFF representa o caractere especial que indica o final 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 indicada por document_id. Quando 'search_property_name' é especificado, occurrence_count exibe apenas o número de ocorrências da palavra-chave atual na propriedade de pesquisa especificada no documento ou na linha. |
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 palavra-chave =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, conforme recomendado, o document_id é mapeado diretamente no valor da chave de texto completo da tabela base.
Por outro lado, 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. Nesse caso, para identificar a linha na tabela base que é retornada por dm_fts_index_keywords_by_document, você precisa unir essa exibição com os resultados retornados por sp_fulltext_keymappings. Antes de uni-los, é necessário armazenar a saída do procedimento armazenado em uma tabela temporária. Em seguida, você poderá unir a coluna document_id de dm_fts_index_keywords_by_document à coluna DocId que é retornada por esse procedimento armazenado. Observe que uma coluna de carimbo de data/hora não pode receber valores no momento da inserção, pois eles são gerados automaticamente pelo SQL Server. Portanto, a coluna timestamp deve ser convertida em colunas varbinary(8 ). O exemplo a seguir mostra estas etapas. Neste exemplo, table_id é a ID da tabela, database_name é o nome do banco de dados e table_name é o nome da 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 SELECT nas colunas abrangidas pelo índice de texto completo e permissões CREATE FULLTEXT CATALOG.
Exemplos
R. Exibindo o conteúdo do índice de texto completo no nível do 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 AdventureWorks2022
.
Observação
Você pode criar esse índice executando o exemplo fornecido para a HumanResources.JobCandidate
tabela em CREATE FULLTEXT INDEX (Transact-SQL).
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),
object_id('HumanResources.JobCandidate'));
GO
Confira também
Pesquisa de texto completo e pesquisa semântica Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Pesquisa de texto completo
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)
Melhorar o desempenho de índices de texto completo