sys.dm_fts_index_keywords_by_document (Transact-SQL)
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à relativo 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(). 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(). 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.
|
display_term |
nvarchar(4000) |
Formato leggibile della parola chiave derivato dal formato interno archiviato nell'indice full-text.
|
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. Quando viene specificato '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, 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(numero_occorrenze) WHERE parola_chiave=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 nella colonna chiave full-text viene utilizzato un tipo di dati non 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 di poter eseguire il 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 l'autorizzazione SELECT per le colonne analizzate dall'indice full-text e le autorizzazioni CREATE FULLTEXT CATALOG.
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 AdventureWorks.
[!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('AdventureWorks'),
object_id('HumanResources.JobCandidate'));
GO
Vedere anche
Riferimento
Funzioni e viste a gestione dinamica relative alla ricerca full-text e semantica (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)