sys.dm_fts_index_keywords_by_property (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di Azure SQLDatabase SQL su Microsoft Fabric

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 di gestione dinamica che permette di vedere quali proprietà registrate sono state emesse da IFilters al momento dell'indice, così come il contenuto esatto di ogni proprietà in ogni documento indicizzato.

Per informazioni sugli elenchi di proprietà di ricerca, vedere Cerca proprietà documento con elenchi di proprietà di ricerca.

Sintassi

sys.dm_fts_index_keywords_by_property
(
    DB_ID('database_name')
    , OBJECT_ID('table_name')
)

Arguments

DB_ID('database_name')

Una chiamata alla funzione DB_ID . DB_ID è inteinte. Questa funzione accetta un nome di database e restituisce l'ID del database, che sys.dm_fts_index_keywords_by_property serve a trovare il database specificato. Se database_name viene omesso, viene restituito l'ID del database corrente.

OBJECT_ID('table_name')

Una chiamata alla funzione OBJECT_ID . OBJECT_ID è inteinte. Questa funzione accetta un nome di tabella e restituisce l'ID della tabella contenente l'indice del testo completo da ispezionare.

Tabella restituita

Nome della colonna Tipo di dati Annulabile Description
keyword 1 varbinary(128) No Rappresentazione esadecimale della parola chiave archiviata nell'indice full-text.
display_term 1 nvarchar(4000) No Formato leggibile della parola chiave derivato dal formato interno archiviato nell'indice full-text.
column_id int No ID della colonna utilizzata per eseguire l'indicizzazione full-text della parola chiave corrente.
document_id bigint 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 all'interno dell'indice full-text della tabella che hai specificato nel OBJECT_ID parametro.

10xFF rappresenta il carattere speciale che indica la fine di un file o di un dataset.

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 determinata proprietà viene registrata in più elenchi di proprietà di ricerca, è possibile che a ciascun elenco di proprietà di ricerca venga assegnato un ID di proprietà interno.

Note

L'ID interno della proprietà è distinto dall'identificatore intero della proprietà specificato quando viene aggiunto la proprietà alla lista delle proprietà di ricerca. Per altre informazioni, vedere Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca.

Per vedere l'associazione tra property_id e il nome della proprietà, vedi sys.registered_search_properties.

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? Questo è utile se interrogare su una determinata proprietà di ricerca non restituisce un documento che ti aspettavi di trovare.

Quando la colonna chiave del testo completo è un tipo di dato intero, come raccomandato, questa document_id viene corrotta direttamente al valore della chiave del testo completo nella tabella base.

Al contrario, quando la colonna della chiave full-text utilizza un tipo di dato non intero, document_id non rappresenta la chiave full-text nella tabella base. In questo caso, per identificare la riga nella tabella base restituita da dm_fts_index_keywords_by_property, devi unire questa vista ai risultati restituiti da sp_fulltext_keymappings.

Prima di poter eseguire il join, è necessario archiviare l'output della stored procedure in una tabella temporanea Poi puoi unire la document_id colonna di dm_fts_index_keywords_by_property con la DocId colonna restituita da questa procedura memorizzata. Una colonna timestamp non può ricevere valori al momento dell'inserimento, perché vengono generati automaticamente da SQL Server. Pertanto, la colonna timestamp deve essere convertita in colonne varbinary(8). Nell'esempio seguente sono illustrati i passaggi per l'operazione. In questo esempio, @table_id è l'ID della tua tabella, database_name è il nome del tuo database e table_name è il nome della tua tabella.

USE database_name;
GO

CREATE TABLE #MyTempTable
(
    docid INT PRIMARY KEY,
    [key] INT NOT NULL
);

DECLARE @db_id AS INT = DB_ID(N'database_name');
DECLARE @table_id AS INT = OBJECT_ID(N'table_name');

INSERT INTO #MyTempTable
EXECUTE sp_fulltext_keymappings @table_id;

SELECT *
FROM sys.dm_fts_index_keywords_by_property(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Richiede SELECT permesso sulle colonne coperte dall'indice del testo completo e CREATE FULLTEXT CATALOG permessi.

Examples

Nell'esempio seguente vengono restituite parole chiave dalla proprietà Author nell'indice full-text della tabella Production.Document del database di esempio AdventureWorks2025. L'esempio usa l'alias KWBPOP per la tabella restituita da sys.dm_fts_index_keywords_by_property L'esempio usa le join interne per combinare colonne da 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 AdventureWorks2025;
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