Condividi tramite


sys.dm_fts_index_keywords_by_property (Transact-SQL)

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 da IFilters al momento dell'indicizzazione, nonché il contenuto esatto di ciascuna proprietà in ogni documento indicizzato.

Per visualizzare tutto il contenuto a livello di documento (incluso il contenuto relativo a una proprietà)

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

[!NOTA]

Per informazioni sugli elenchi delle proprietà di ricerca, vedere Eseguire ricerche nelle proprietà dei documenti con elenchi delle 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(). Tramite tale funzione viene accettato un nome di database e viene restituito l'ID database, utilizzato da sys.dm_fts_index_keywords_by_property 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.

property_id

int

ID interno della proprietà di ricerca dell'elenco 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 proprietà fosse registrata in più elenchi delle proprietà di ricerca, a ciascun elenco potrebbe essere assegnato un ID di proprietà interno.

[!NOTA]

L'ID di proprietà interno si distingue dall'identificatore intero della proprietà specificato all'aggiunta della proprietà all'elenco delle proprietà di ricerca. Per ulteriori informazioni, vedere Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca.

Per visualizzare l'associazione tra property_id e il nome di proprietà

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 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 chiave full-text viene utilizzato un tipo di dati non Integer, document_id non rappresenta la chiave full-text della tabella di base. In tal caso, per identificare la riga restituita da dm_fts_index_keywords_by_property 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 quindi creare un join della colonna document_id di dm_fts_index_keywords_by_property 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_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. Nell'esempio vengono utilizzati 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 AdventureWorks;
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

Vedere anche

Riferimento

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)

Concetti

Ricerca full-text (SQL Server)

Miglioramento delle prestazioni di indici full-text

Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca