sys.dm_fts_index_keywords_by_document (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceSQL-Datenbank in Microsoft Fabric

Gibt Informationen über den Inhalt auf Dokumentebene von einem Volltextindex zurück, der der angegebenen Tabelle zugeordnet ist.

sys.dm_fts_index_keywords_by_document ist eine dynamische Verwaltungsfunktion.

Syntax

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

Argumente

DB_ID('database_name')

Ein Aufruf an die DB_ID Funktion. DB_ID ist int. Diese Funktion akzeptiert einen Datenbanknamen und gibt die Datenbank-ID zurück, die sys.dm_fts_index_keywords_by_document zur Suche nach der angegebenen Datenbank verwendet wird. Wenn database_name nicht angegeben ist, wird die aktuelle Datenbank-ID zurückgegeben.

OBJECT_ID('table_name')

Ein Aufruf an die OBJECT_ID Funktion. OBJECT_ID ist int. Diese Funktion akzeptiert einen Tabellennamen und gibt die Tabellen-ID der Tabelle zurück, die den Volltextindex zur Inspektion enthält.

Zurückgegebene Tabelle

Spaltenname Datentyp Nullfähig Description
keyword 1 varbinary(128) No Die hexadezimale Darstellung des Schlüsselworts, das im Volltextindex gespeichert ist.
display_term 1 nvarchar(4000) No Die Klartextform des Schlüsselworts. Dieses Format wird vom internen Format abgeleitet, das im Volltextindex gespeichert ist.
column_id int No Die ID der Spalte für die Volltextindizierung des aktuellen Schlüsselworts.
document_id bigint Ja Die ID des Dokuments bzw. der Zeile für die Volltextindizierung des aktuellen Ausdrucks. Diese ID entspricht dem Volltextschlüsselwert dieses Dokuments bzw. dieser Zeile.
occurrence_count int Ja Anzahl der Vorkommen des aktuellen Schlüsselworts im Dokument oder der Zeile, die durch document_idgekennzeichnet ist. Wenn 'search_property_name' angegeben ist, occurrence_count wird nur die Anzahl der Vorkommen des aktuellen Schlüsselworts in der angegebenen Sucheigenschaft innerhalb des Dokuments oder der Zeile angezeigt.

10xFF steht für das Spezialzeichen, das das Ende einer Datei oder eines Datensatzes anzeigt.

Bemerkungen

Die von sys.dm_fts_index_keywords_by_document ihnen zurückgegebenen Informationen sind unter anderem nützlich, um Folgendes herauszufinden:

  • Die Gesamtzahl der Schlüsselwörter in einem Volltextindex
  • Ob ein Schlüsselwort Teil eines bestimmten Dokuments bzw. einer Zeile ist
  • Wie oft ein Schlüsselwort im gesamten Volltextindex erscheint. Das heißt, SUM(occurrence_count) WHERE keyword = <keyword_value>
  • Wie oft ein Schlüsselwort in einem bestimmten Dokument bzw. in einer Zeile vorkommt
  • Wie viele Schlüsselwörter ein bestimmtes Dokument bzw. eine Zeile enthält

Außerdem können Sie die von Ihnen bereitgestellten sys.dm_fts_index_keywords_by_document Informationen nutzen, um alle Schlüsselwörter eines bestimmten Dokuments oder einer Zeile abzurufen.

Wenn die Volltextschlüssel-Spalte ein ganzzahliger Datentyp ist, wie empfohlen, wird sie document_id direkt auf den Volltextschlüsselwert in der Basistabelle abgebildet.

Im Gegensatz dazu stellt die Volltext-Schlüssel-Spalte, wenn sie einen nicht-ganzzahligen Datentyp verwendet, document_id den Volltextschlüssel in der Basistabelle nicht dar. In diesem Fall müssen Sie, um die Zeile in der Basistabelle zu identifizieren, die von zurückgegeben wird dm_fts_index_keywords_by_document, diese Ansicht mit den von sp_fulltext_keymappings zurückgegebenen Ergebnissen verbinden.

Speichern Sie jedoch zuvor die Ausgabe der gespeicherten Prozedur in eine temporäre Tabelle. Dann kannst du die Spalte document_id von dm_fts_index_keywords_by_document mit der DocId Spalte verbinden, die durch dieses gespeicherte Verfahren zurückgegeben wird. Eine Zeitstempel-Spalte kann keine Werte zur Einfügungszeit empfangen, da sie automatisch von SQL Server generiert werden. Daher muss die Zeitstempelspalte in varbinary(8) -Spalten konvertiert werden. Das folgende Beispiel zeigt die erforderlichen Schritte: In diesem Beispiel ist @table_id die ID Ihrer Tabelle, database_name der Name Ihrer Datenbank und table_name der Name Ihrer Tabelle.

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_document(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Erlaubnisse

Erfordert SELECT eine Genehmigung für die Spalten, die vom Volltextindex abgedeckt sind, sowie CREATE FULLTEXT CATALOG Berechtigungen.

Examples

A. Anzeige des Volltext-Indexinhalts auf Dokumentenebene

Im folgenden Beispiel wird der Inhalt des Volltextindexes auf Dokumentebene in der HumanResources.JobCandidate-Tabelle der AdventureWorks2025-Beispieldatenbank angezeigt.

Note

Sie können diesen Index erstellen, indem Sie das für die HumanResources.JobCandidate Tabelle bereitgestellte Beispiel in CREATE FULLTEXT INDEXausführen.

SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO