sys.dm_fts_index_keywords_by_property (Transact-SQL)

Si applica a:SQL Server

Restituisce tutto il contenuto correlato alla proprietà nell'indice full-text di una tabella specificata. Sono inclusi tutti i dati che appartengono a qualsiasi proprietà registrata dall'elenco delle proprietà di ricerca associato a tale indice full-text.

sys.dm_fts_index_keywords_by_property è una funzione a gestione dinamica che consente di visualizzare le proprietà registrate generate dai filtri IFilter in fase di indicizzazione, nonché il contenuto esatto di ogni proprietà in ogni documento indicizzato.

Per visualizzare tutto il contenuto a livello di documento (incluso il contenuto correlato alle proprietà)

Per visualizzare informazioni sull'indice full-text di livello superiore

Nota

Per informazioni sugli elenchi di proprietà di ricerca, vedere Cerca proprietà documento con elenchi di proprietà di ricerca.

Sintassi

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

Argomenti

db_id('database_name')
Chiamata alla funzione DB_ID(). Questa funzione accetta un nome di database e restituisce l'ID del database, che sys.dm_fts_index_keywords_by_property usa per trovare il database specificato. Se database_name viene omesso, viene restituito l'ID del database corrente.

object_id('table_name')
Chiamata alla funzione OBJECT_ID(). Tale funzione accetta un nome di tabella e restituisce l'ID della tabella che contiene l'indice full-text da controllare.

Tabella restituita

Colonna Tipo di dati Descrizione
keyword nvarchar(4000) Rappresentazione esadecimale della parola chiave archiviata nell'indice full-text.

Nota: OxFF rappresenta il carattere speciale che indica la fine di un file o di un set di dati.
display_term nvarchar(4000) Formato leggibile della parola chiave derivato dal formato interno archiviato nell'indice full-text.

Nota: OxFF rappresenta il carattere speciale che indica la fine di un file o di un set di dati.
column_id int ID della colonna utilizzata per eseguire l'indicizzazione full-text della parola chiave corrente.
document_id int ID della riga o del documento utilizzato per eseguire l'indicizzazione full-text del termine corrente. L'ID corrisponde al valore della chiave full-text della riga o del documento specificato.
property_id int ID proprietà interno della proprietà di ricerca all'interno dell'indice full-text della tabella specificata nel parametro OBJECT_ID('table_name').

Quando una determinata proprietà viene aggiunta a un elenco delle proprietà di ricerca, il motore di ricerca full-text registra la proprietà e le assegna un ID interno specifico di tale elenco di proprietà. L'ID di proprietà interno, che è un valore intero, è univoco per ogni elenco delle proprietà di ricerca. Se una determinata proprietà viene registrata in più elenchi di proprietà di ricerca, è possibile che a ciascun elenco di proprietà di ricerca venga assegnato un ID di proprietà interno.

Nota: l'ID della proprietà interna è distinto dall'identificatore integer della proprietà specificato durante l'aggiunta della proprietà all'elenco delle proprietà di ricerca. Per altre informazioni, vedere Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca.

Per visualizzare l'associazione tra property_id e il nome della proprietà:
sys.registered_search_properties (Transact-SQL)

Osservazioni:

Questa DMV può rispondere a domande come le seguenti:

  • Quale contenuto viene archiviato in una proprietà specificata per un dato DocID?

  • Quanto è comune una proprietà specificata tra i documenti indicizzati?

  • Quali documenti contiene effettivamente una proprietà specificata? Ciò si rivela utile se l'esecuzione di una query su una proprietà di ricerca specificata non restituisce il documento previsto.

Quando la colonna chiave full-text è, come consigliato, un tipo di dati integer, viene eseguito il mapping diretto di document_id al valore della chiave full-text nella tabella di base.

Quando invece la colonna chiave full-text utilizza un tipo di dati diverso da integer, document_id non rappresenta la chiave full-text della tabella di base. In questo caso, per identificare la riga nella tabella di base restituita da dm_fts_index_keywords_by_property, è necessario unire questa vista ai risultati restituiti da sp_fulltext_keymappings. Prima di poter eseguire il join, è necessario archiviare l'output della stored procedure in una tabella temporanea È quindi possibile unire la colonna document_id di dm_fts_index_keywords_by_property con la colonna DocId restituita da questa stored procedure. Si noti che una colonna timestamp non può ricevere valori in fase di inserimento, perché vengono generati automaticamente da SQL Server. Pertanto, la colonna timestamp deve essere convertita in colonne varbinary(8). Nell'esempio seguente sono illustrati i passaggi per l'operazione. In questo esempio table_id è l'ID della tabella, database_name è il nome del database e table_name è il nome della tabella.

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  
  

Autorizzazioni

Sono necessarie l'autorizzazione SELECT per le colonne analizzate dall'indice full-text e le autorizzazioni CREATE FULLTEXT CATALOG.

Esempi

Nell'esempio seguente vengono restituite parole chiave dalla proprietà Author nell'indice full-text della tabella Production.Document del database di esempio AdventureWorks. Nell'esempio viene utilizzato l'alias KWBPOP per la tabella restituita da sys.dm_fts_index_keywords_by_property. L'esempio usa inner join per combinare colonne di 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  

Vedi anche

Ricerca full-text
Migliorare le prestazioni degli indici full-text
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)
Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca