Compartilhar via


sys.dm_fts_index_keywords_by_property (Transact-SQL)

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 a esse índice de texto completo.

sys.dm_fts_index_keywords_by_property é uma função de gerenciamento dinâmico que permite verificar quais propriedades registradas foram emitidas pelos 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 de documento (incluindo conteúdo relacionado à propriedade)

Para exibir informações de alto nível sobre um índice de texto completo

ObservaçãoObservação

Para obter mais informações sobre listas de propriedades de pesquisa, consulte Pesquisar propriedades de 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 à função DB_ID (). Esta função aceita um nome de banco de dados e retorna a ID do banco de dados, que o sys.dm_fts_index_keywords_by_property usa para localizar o banco de dados especificado. Se database_name for omitido, a ID do banco de dados atual será retornada.

  • object_id('table_name')
    Uma chamada à 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

keyword

nvarchar(4000)

A representação hexadecimal da palavra-chave armazenada no índice de texto completo.

ObservaçãoObservação

OxFF representa o caractere especial que indica o término 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çãoObservação

OxFF representa o caractere especial que indica o término 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

A ID de propriedade interna da propriedade de pesquisa no í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.

ObservaçãoObservação

A ID de propriedade interna é distinta do identificador de inteiro de propriedade que é especificado ao adicionar a propriedade à lista de propriedades de pesquisa. Para obter mais informações, consulte Pesquisar propriedades de documento com listas de propriedades de pesquisa.

Para exibir a associação entre property_id e o nome de propriedade

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 for um tipo de dados inteiro, como recomendado, a document_id será mapeada diretamente para o valor da chave de texto completo da tabela base.

Ao contrário, quando a coluna de chave de texto completo usar um tipo de dados não inteiro, a document_id não representará a chave de texto completo da tabela base. Nesse caso, para identificar a linha na tabela base que é retornada pelo dm_fts_index_keywords_by_property, você precisa unir a exibição com os resultados retornados pelo sp_fulltext_keymappings. Antes de uni-los, é necessário armazenar a saída do procedimento armazenado em uma tabela temporária. Depois, você poderá unir a coluna document_id de dm_fts_index_keywords_by_property com a coluna DocId que é retornada por esse procedimento armazenado. Observe que uma coluna timestamp não pode receber valores na hora da inserção, pois eles são gerados automaticamente pelo SQL Server. Sendo assim, a coluna timestamp deve ser convertida em colunas varbinary(8). O exemplo a seguir mostra estas etapas. Neste exemplo, table_id é a ID da sua tabela, database_name é o nome de seu banco de dados e table_name é o nome de sua 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 AdventureWorks;
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

Consulte também

Referência

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)

Conceitos

Pesquisa de texto completo (SQL Server)

Melhorar o desempenho de índices de texto completo

Pesquisar propriedades de documento com listas de propriedades de pesquisa