sys.dm_fts_index_keywords_by_document (Transact-SQL)

Si applica a:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Restituisce informazioni sul contenuto a livello di documento di un indice full-text associato alla tabella specificata.

sys.dm_fts_index_keywords_by_document è una funzione a gestione dinamica.

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

Per visualizzare informazioni sul contenuto a livello di proprietà correlato a una proprietà del documento

Sintassi

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

Argomenti

db_id('database_name')
Chiamata alla funzione DB_ID(). Tale funzione accetta un nome di database e restituisce l'ID del database utilizzato da sys.dm_fts_index_keywords_by_document per eseguire la ricerca del 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.
occurrence_count int Numero di occorrenze della parola chiave corrente nel documento o nella riga indicata da document_id. Quando si specifica "search_property_name", occurrence_count visualizza solo il numero di occorrenze della parola chiave corrente nella proprietà di ricerca specificata all'interno del documento o della riga.

Osservazioni:

Le informazioni restituite da sys.dm_fts_index_keywords_by_document sono utili per individuare, tra gli altri, anche gli elementi seguenti:

  • Numero totale di parole chiave contenute in un indice full-text.

  • Appartenenza di una parola chiave a una riga oppure a un documento specificato.

  • Numero di volte in cui una parola chiave è presente nell'indice full-text intero, ovvero:

    (SUM(occurrence_count) parola chiave=WHERE keyword_value )

  • Numero di volte in cui una parola chiave è presente in una riga oppure in un documento specificato.

  • Numero di parole chiave contenute in una riga oppure in un documento specificato.

È possibile inoltre utilizzare le informazioni fornite da sys.dm_fts_index_keywords_by_document per recuperare tutte le parole chiave che appartengono a una riga oppure a un documento specificato.

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_document, è necessario unire questa vista con i risultati restituiti da sp_fulltext_keymappings. Prima di poter eseguire il join, è necessario archiviare l'output della stored procedure in una tabella temporanea e unire in join la colonna document_id di dm_fts_index_keywords_by_document alla 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_document   
   ( @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

R. Visualizzazione del contenuto dell'indice full-text a livello di documento

Nell'esempio seguente viene visualizzato il contenuto dell'indice full-text a livello di documento nella tabella HumanResources.JobCandidate del database di esempio AdventureWorks2022.

Nota

È possibile creare questo indice eseguendo l'esempio fornito per la HumanResources.JobCandidate tabella in CREATE FULLTEXT INDEX (Transact-SQL).

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),   
object_id('HumanResources.JobCandidate'));  
GO  

Vedi anche

Funzioni e viste a gestione dinamica ricerca full-text e funzioni (Transact-SQL)
Ricerca full-text
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)
Migliorare le prestazioni degli indici full-text