sys.dm_fts_index_keywords_by_property (Transact-SQL)

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

Devolve todo o conteúdo relacionado com propriedades no índice de texto completo de uma dada tabela. Isto inclui todos os dados que pertencem a qualquer propriedade registada pela lista de propriedades de pesquisa associada a esse índice em texto completo.

sys.dm_fts_index_keywords_by_property é uma função de gestão dinâmica que permite ver que propriedades registadas foram emitidas pelos IFilters no momento do índice, bem como o conteúdo exato de cada propriedade em cada documento indexado.

Para informações sobre listas de propriedades de pesquisa, consulte Pesquisar Propriedades de Documentos 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')

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_property 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.
property_id int Sim ID interno da propriedade de pesquisa dentro do índice de texto completo da tabela que especificou no OBJECT_ID parâmetro.

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

Quando uma determinada propriedade é adicionada a uma lista de propriedades de pesquisa, o Full-Text Engine regista a propriedade e atribui-lhe um ID interno de propriedade específico para essa lista de propriedades. O ID de propriedade interna, que é um inteiro, é único para uma dada lista de propriedades de pesquisa. Se uma determinada propriedade estiver registrada para várias listas de propriedades de pesquisa, um ID de propriedade interno diferente poderá ser atribuído 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 pesquisa. Para obter mais informações, consulte Pesquisar propriedades do 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

Esta perspetiva dinâmica de gestão pode responder a perguntas como as seguintes:

  • Que conteúdo está armazenado numa determinada propriedade para um determinado DocID?

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

  • Que documentos contêm realmente uma determinada propriedade? Isto é útil se consultar numa determinada propriedade de pesquisa não devolver um documento que esperavas encontrar.

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_property, é 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_property 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_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 de texto integral e CREATE FULLTEXT CATALOG permissões.

Exemplos

O exemplo seguinte devolve palavras-chave da Author propriedade no índice de texto completo da Production.Document tabela da AdventureWorks2025 base de dados de exemplo. O exemplo usa o alias KWBPOP para a tabela devolvida 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