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.
|
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. |
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.
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