Condividi tramite


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.

[!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. 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)

Concetti

Ricerca full-text (SQL Server)

Miglioramento delle prestazioni di indici full-text