sys.dm_fts_index_keywords_by_property (Transact-SQL)
Aplica-se: SQL Server
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 por IFilters no momento da indexação, bem como o conteúdo exato de cada propriedade em cada documento indexado.
Para exibir todo o conteúdo no nível do documento (incluindo conteúdo relacionado à propriedade)
Para exibir informações de índice de texto completo de nível superior
Observação
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')
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_property 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. |
property_id | int | ID da propriedade interna da propriedade de pesquisa dentro do índice de texto completo da tabela que você especificou no parâmetro OBJECT_ID('table_name'). 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. Nota: O ID da propriedade interna é diferente do identificador inteiro da propriedade especificado ao adicionar a propriedade à lista de propriedades de pesquisa. Para obter mais informações, veja Pesquisar propriedades de documento com listas de propriedades de pesquisa. Para exibir a associação entre property_id e o nome da propriedade: sys.registered_search_properties (Transact-SQL) |
Comentários
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 será útil se a consulta em uma determinada propriedade de pesquisa não retornar um documento que você esperava encontrar.
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 retornada por dm_fts_index_keywords_by_property, você precisa unir essa exibiçã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. Em seguida, você pode unir a coluna document_id do dm_fts_index_keywords_by_property com a coluna DocId 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_property
( @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
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 AdventureWorks
. 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 AdventureWorks2022;
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
Confira também
Pesquisa de texto completo
Melhorar o desempenho de índices de texto completo
sp_fulltext_keymappings (Transact-SQL)
sys.dm_fts_index_keywords_by_document (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.registered_search_properties (Transact-SQL)
sys.registered_search_property_lists (Transact-SQL)
Pesquisar propriedades de documento com listas de propriedades de pesquisa