sys.dm_fts_index_keywords_by_property (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Retorna todo o conteúdo relacionado a propriedade no índice de texto completo de uma determinada tabela. Isso inclui todos os dados pertencentes a qualquer propriedade registrada pela lista de propriedades de pesquisa associada àquele índice de texto completo.

sys.dm_fts_index_keywords_by_property é uma função de gerenciamento dinâmico que permite ver quais propriedades registradas foram emitidas pelos IFilters em tempo de índice, bem como o conteúdo exato de cada propriedade em cada documento indexado.

Para obter informações sobre listas de propriedades de pesquisa, consulte Pesquisar propriedades do documento com listas de propriedades de pesquisa.

Sintaxe

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

Argumentos

DB_ID('database_name')

Um chamado para a função DB_ID . DB_ID é int. Essa função aceita um nome de banco de dados e retorna o ID do banco de donadas, que sys.dm_fts_index_keywords_by_property é usado para encontrar o banco de dados especificado. Se database_name for omitido, a ID de banco de dados atual será retornada.

OBJECT_ID('table_name')

Uma ligação para a função OBJECT_ID . OBJECT_ID é int. Essa função aceita um nome de tabela e retorna o ID da tabela contendo 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 armazenada no índice de texto completo.
display_term 1 nvarchar(4000) No O formato legível da palavra-chave. Esse formato é derivado do formato interno, que é armazenado no índice de texto completo.
column_id int No A ID da coluna a partir da qual a palavra-chave atual foi indexada com texto completo.
document_id bigint Sim 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.
property_id int Sim ID interno da propriedade de busca dentro do índice de texto completo da tabela que você especificou no OBJECT_ID parâmetro.

10xFF representa o caractere especial que indica o fim de um arquivo ou conjunto de dados.

Quando uma determinada propriedade é adicionada a uma lista de propriedades de pesquisa, o Mecanismo de Texto Completo registra a propriedade e atribui a ela uma ID de propriedade interna que é específica dessa lista de propriedades. A ID de propriedade interna, que é um inteiro, é exclusiva de uma determinada lista de propriedades de pesquisa. Se uma determinada propriedade for registrada para várias listas de propriedades de pesquisa, uma ID de propriedade interna diferente poderá ser atribuída para cada lista de propriedades de pesquisa.

Note

O ID interno da propriedade é distinto do identificador inteiro da propriedade especificado ao adicionar a propriedade à lista de propriedades de busca. Para obter mais informações, consulte Pesquisar propriedades de documento com listas de propriedades de pesquisa.

Para ver a associação entre property_id e o nome da propriedade, veja sys.registered_search_properties.

Observações

Essa exibição de gerenciamento dinâmico pode responder a perguntas como estas:

  • Que conteúdo é armazenado em uma determinada propriedade para um determinado DocID?

  • Quão comum é uma determinada propriedade entre os documentos indexados?

  • Quais documentos contêm de fato uma determinada propriedade? Isso é útil se consultar em uma determinada propriedade de busca não retorna um documento que você esperava encontrar.

Quando a coluna da chave do texto completo é um tipo de dado inteiro, conforme recomendado, ela document_id mapeia diretamente para o valor da chave do texto completo na tabela base.

Em contraste, quando a coluna de chave de texto completo usa um tipo de dado não inteiro, document_id não representa a chave de texto completo na tabela base. Nesse caso, para identificar a linha na tabela base que é retornada por dm_fts_index_keywords_by_property, você precisa unir essa visualização aos resultados retornados por sp_fulltext_keymappings.

Antes de uni-los, é necessário armazenar a saída do procedimento armazenado em uma tabela temporária. Então você pode juntar a document_id coluna de dm_fts_index_keywords_by_property com a DocId coluna que é retornada por esse procedimento armazenado. Uma coluna de carimbo de tempo não pode receber valores no momento da inserção, porque 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 é o 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 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_property(@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 do texto completo e CREATE FULLTEXT CATALOG permissões.

Examples

O exemplo a seguir retornar palavras-chave da propriedade Author no índice de texto completo da tabela Production.Document do banco de dados de amostra AdventureWorks2025. O exemplo usa o alias KWBPOP para a tabela retornada por sys.dm_fts_index_keywords_by_property . O exemplo usa junções internas para combinar colunas de sys.registered_search_properties e sys.fulltext_indexes.

-- Once the full-text index is configured to support property searching
-- on the Author property, return any keywords indexed for this property.
USE AdventureWorks2025;
GO

SELECT KWBPOP.*
FROM sys.dm_fts_index_keywords_by_property(DB_ID(), OBJECT_ID('Production.Document')) AS KWBPOP
     INNER JOIN sys.registered_search_properties AS RSP
         ON ((KWBPOP.property_id = RSP.property_id)
         AND (RSP.property_name = 'Author'))
     INNER JOIN sys.fulltext_indexes AS FTI
         ON ((FTI.[OBJECT_ID] = OBJECT_ID('Production.Document'))
         AND (RSP.property_list_id = FTI.property_list_id));
GO