sys.dm_fts_index_keywords_by_document (Transact-SQL)
Vengono restituite informazioni sul contenuto a livello di documento di un indice full-text per la tabella specificata. Una determinata parola chiave può essere inclusa in diversi documenti.
sys.dm_fts_index_keywords_by_document è una funzione a gestione dinamica.
Nota
Per visualizzare informazioni sull'indice full-text di livello superiore a livello della parola chiave, utilizzare la funzione a gestione dinamica sys.dm_fts_index_keywords (Transact-SQL).
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(). Tramite tale funzione viene accettato un nome di database e viene restituito l'ID database, utilizzato da sys.dm_fts_index_keywords_by_document per individuare il database specificato. Se database_name viene omesso, viene restituito l'ID del database corrente.object_id('table_name')
Chiamata alla funzione OBJECT_ID(). Tramite tale funzione viene accettato un nome di tabella e viene restituito 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 nella riga o nel documento indicato da document_id. |
Osservazioni
Le informazioni restituite da sys.dm_fts_index_keywords_by_document sono utili per individuare, tra gli altri, 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 ) WHERE keyword=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 della 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 nella colonna della chiave full-text viene utilizzato 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 restituita da dm_fts_index_keywords_by_document nella tabella di base, è necessario creare un join di questa vista con i risultati restituiti da sp_fulltext_keymappings. Prima che sia possibile creare i join, è necessario archiviare l'output della stored procedure in una tabella temporanea e creare un join della 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 al momento dell'inserimento perché questi vengono generati automaticamente da SQL Server. È pertanto necessario convertire la colonna timestamp nelle 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 le autorizzazioni CREATE FULLTEXT CATALOG e SELECT per le colonne analizzate dall'indice full-text.
Esempi
A. 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 AdventureWorks2008R2.
Nota
È possibile creare questo indice eseguendo l'esempio fornito per la tabella HumanResources.JobCandidate in CREATE FULLTEXT INDEX (Transact-SQL).
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2008R2'),
object_id('HumanResources.JobCandidate'));
GO