sys.dm_fts_index_keywords_by_document (Transact-SQL)

Gibt Informationen über den Inhalt auf Dokumentebene von einem Volltextindex für die angegebene Tabelle zurück. Ein gegebenes Schlüsselwort kann in mehreren Dokumenten angezeigt werden.

sys.dm_fts_index_keywords_by_document ist eine dynamische Verwaltungsfunktion.

HinweisHinweis

Um Volltextindexinformationen auf höherer Ebene anzuzeigen, verwenden Sie auf Schlüsselwortebene die dynamische Verwaltungsfunktion sys.dm_fts_index_keywords (Transact-SQL).

Syntax

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

Argumente

  • db_id('database_name')
    Ein Aufruf der Funktion DB_ID(). Diese Funktion akzeptiert einen Datenbanknamen und gibt die Datenbank-ID zurück, die von sys.dm_fts_index_keywords_by_document für die 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 der Funktion OBJECT_ID(). Diese Funktion nimmt einen Tabellennamen an und gibt die Tabellen-ID der Tabelle zurück, die den zu überprüfenden Volltextindex enthält.

Zurückgegebene Tabelle

Spalte

Datentyp

Beschreibung

Schlüsselwort

nvarchar(8000)

Die hexadezimale Darstellung des Schlüsselworts, das im Volltextindex gespeichert ist.

HinweisHinweis
OxFF stellt das Sonderzeichen dar, mit dem das Ende einer Datei oder eines Datasets angegeben wird.

display_term

nvarchar(8000)

Die Klartextform des Schlüsselworts. Dieses Format wird vom internen Format abgeleitet, das im Volltextindex gespeichert ist.

HinweisHinweis
OxFF stellt das Sonderzeichen dar, mit dem das Ende einer Datei oder eines Datasets angegeben wird.

column_id

int

Die ID der Spalte für die Volltextindizierung des aktuellen Schlüsselworts.

document_id

int

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

Die Anzahl der Vorkommen des aktuellen Schlüsselworts in dem mit document_id angegebenen Dokument bzw. in der Zeile.

Hinweise

Die von sys.dm_fts_index_keywords_by_document zurückgegebenen Informationen dienen u. a. zum Abrufen der folgenden Ergebnisse:

  • 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 vorkommt, d. h.:

    (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

Darüber hinaus können Sie anhand der von sys.dm_fts_index_keywords_by_document zurückgegebenen Informationen alle Schlüsselwörter eines gegebenen Dokuments oder einer gegebenen Zeile abrufen.

Wenn die Volltextschlüsselspalte wie empfohlen mit dem integer-Datentyp definiert ist, kann die document_id direkt dem Volltextschlüsselwert in der Basistabelle zugeordnet werden.

Wenn als Datentyp für die Volltextschlüsselspalte jedoch ein anderer Typ als Integer festgelegt ist, stellt document_id nicht den Volltextschlüsselwert in der Basistabelle dar. Um in diesem Fall die Zeile in der Basistabelle zu identifizieren, die von dm_fts_index_keywords_by_document zurückgegeben wird, müssen Sie die Sicht mit den von sp_fulltext_keymappings zurückgegebenen Ergebnissen verknüpfen. Speichern Sie jedoch zuvor die Ausgabe der gespeicherten Prozedur in eine temporäre Tabelle. Anschließend können Sie die Spalte document_id von dm_fts_index_keywords_by_document mit der von der gespeicherten Prozedur zurückgegebenen Spalte DOCID verknüpfen. Beachten Sie, dass eine timestamp-Spalte zum Zeitpunkt des Einfügens keine Werte abrufen kann, da sie von SQL Server automatisch generiert werden. Die timestamp-Spalte muss daher 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 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

Berechtigungen

Erfordert CREATE FULLTEXT CATALOG-Berechtigungen und die SELECT-Berechtigung für die vom Volltextindex abgedeckten Spalten.

Beispiele

A. Anzeigen des Inhalts eines Volltextindex auf Dokumentebene

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

HinweisHinweis

Sie können diesen Index erstellen, indem Sie das unter CREATE FULLTEXT INDEX (Transact-SQL) für die HumanResources.JobCandidate-Tabelle bereitgestellte Beispiel ausführen.

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks'), 
object_id('HumanResources.JobCandidate'));
GO