sp_fulltext_keymappings (Transact-SQL)

Gibt Zuordnungen zwischen Dokumentbezeichnern (DocId) und Volltextschlüsselwerten zurück. Die DocId-Spalte enthält Werte für eine ganze bigint-Zahl, die einem bestimmten Volltextschlüsselwert in einer volltextindizierten Tabelle zugeordnet ist. DocId-Werte, die eine Suchbedingung erfüllen, werden vom Volltextsuchmodul an das Datenbankmodul übergeben. Dort werden sie Volltextschlüsselwerten aus der abgefragten Basistabelle zugeordnet. Die Volltextschlüsselspalte ist ein eindeutiger Index, der in einer Spalte der Tabelle erforderlich ist.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_fulltext_keymappings { table_id | table_id, docid | table_id, NULL, key }

Parameter

  • table_id
    Ist die Objekt-ID der volltextindizierten Tabelle. Wenn Sie eine ungültige table_id angeben, wird ein Fehler zurückgegeben. Informationen zum Abrufen der Objekt-ID einer Tabelle finden Sie unter OBJECT_ID (Transact-SQL).

  • docid
    Ein interner Dokumentbezeichner (DocId), der dem Schlüsselwert entspricht. Ein ungültiger docid-Wert gibt keine Ergebnisse zurück.

  • key
    Der Wert des Volltextschlüssels aus der angegebenen Tabelle. Ein ungültiger key-Wert gibt keine Ergebnisse zurück. Informationen zu Volltextschlüsselwerten finden Sie unter Verwalten von Volltextindizes.

Wichtiger HinweisWichtig

Informationen zur Verwendung von einem, zwei oder drei Parametern finden Sie unter "Hinweise" später in diesem Thema.

Rückgabecodewerte

Keine Angabe.

Resultsets

Spaltenname

Datentyp

Beschreibung

DocId

bigint

Eine interne Dokumentbezeichnerspalte (DocId), die dem Schlüsselwert entspricht.

Key

*

Der Wert des Volltextschlüssels aus der angegebenen Tabelle.

Wenn in der Zuordnungstabelle keine Volltextschlüssel vorhanden sind, wird ein leeres Rowset zurückgegeben.

* Der Datentyp für Key ist identisch mit dem Datentyp der Volltextschlüsselspalte in der Basistabelle.

Berechtigungen

Diese Funktion ist öffentlich und erfordert keine besonderen Berechtigungen.

Hinweise

In der folgenden Tabelle sind die Auswirkungen beschrieben, die sich ergeben, wenn ein, zwei oder drei Parameter verwendet werden.

Diese Parameterliste ...

Hat dieses Ergebnis ...

table_id

Wenn sp_fulltext_keymappings nur mit dem Parameter table_id aufgerufen wird, gibt die Liste alle Volltextschlüsselwerte (Key) aus der angegebenen Basistabelle sowie die DocId zurück, die jedem Schlüssel entspricht. Dies schließt auch Schlüssel mit ein, für die ein Löschvorgang aussteht.

Diese Funktion ist hilfreich zur Behebung zahlreicher Probleme. Insbesondere bietet sie sich zum Anzeigen des Inhalts des Volltextindex an, wenn der ausgewählte Volltextschlüssel keinen ganzzahligen Datentyp aufweist. Dies schließt den Join der Ergebnisse von sp_fulltext_keymappings mit den Ergebnissen von sys.dm_fts_index_keywords_by_document ein. Weitere Informationen finden Sie unter sys.dm_fts_index_keywords_by_document (Transact-SQL).

Im Allgemeinen sollten Sie jedoch, falls möglich, sp_fulltext_keymappings mit Parametern ausführen, die einen bestimmten Volltextschlüssel oder DocId angeben. Dies ist erheblich effizienter als eine gesamte Schlüsselzuordnung zurückzugeben, insbesondere für eine sehr große Tabelle, für die die Leistungskosten der Rückgabe der gesamten Schlüsselzuordnung erheblich sein könnten.

table_id, docid

Werden nur table_id und docid angegeben, darf docid nicht NULL sein, und es muss eine gültige DocId in der angegebenen Tabelle angegeben werden. Diese Funktion ist hilfreich, um den benutzerdefinierten Volltextschlüssel aus der Basistabelle zu isolieren, die der DocId eines bestimmten Volltextindex entspricht.

table_id, NULL, key

Wenn drei Parameter vorhanden sind, muss der zweite Parameter NULL sein, und key darf nicht NULL sein und muss einen gültigen Volltextschlüsselwert aus der angegebenen Tabelle angeben. Diese Funktion ist hilfreich, um die DocID zu isolieren, die einem bestimmten Volltextschlüssel aus der Basistabelle entspricht.

Wenn eine der folgenden Bedingungen zutrifft, wird ein Fehler zurückgegeben:

  • Sie geben eine ungültige table_id an.

  • Die Tabelle ist nicht volltextindiziert.

  • NULL tritt für einen Parameter auf, der möglicherweise ungleich NULL ist

Beispiele

HinweisHinweis

Die Beispiele in diesem Abschnitt verwenden die Production.ProductReview-Tabelle der AdventureWorks2012-Beispieldatenbank. Sie können diesen Index erstellen, indem Sie das unter CREATE FULLTEXT INDEX (Transact-SQL) für die ProductReview-Tabelle bereitgestellte Beispiel ausführen.

A.Abrufen aller Schlüssel- und DocId-Werte

Im folgenden Beispiel wird eine DECLARE-Anweisung verwendet, um die lokale Variable @table\_id zu erstellen und ihr die ID der ProductReview-Tabelle als Wert zuzuweisen. Im Beispiel wird sp_fulltext_keymappings ausgeführt, das die @table\_id für den table_id-Parameter angibt.

HinweisHinweis

Bei kleinen Tabellen kann sp_fulltext_keymappings nur mit dem table_id-Parameter verwendet werden.

USE AdventureWorks2012;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

In diesem Beispiel werden alle DocIds und Volltextschlüssel folgendermaßen von der Tabelle zurückgegeben:

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B.Abrufen des DocId-Werts für einen bestimmten Schlüsselwert

Im folgenden Beispiel wird eine DECLARE-Anweisung verwendet, um die lokale Variable @table\_id zu erstellen und ihr die ID der ProductReview-Tabelle als Wert zuzuweisen. In dem Beispiel wird sp_fulltext_keymappings ausgeführt, wobei @table\_id für den table_id-Parameter, NULL für den docid-Parameter, und 4 für den key-Parameter angegeben wird.

HinweisHinweis

Für kleine Tabellen kann sp_fulltext_keymappings nur mit dem table_id-Parameterverwendet werden.

USE AdventureWorks2012;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

Dieses Beispiel gibt die folgenden Ergebnisse zurück:

docid

key

4

4

4

Siehe auch

Verweis

Gespeicherte Prozeduren für Volltextsuche und semantische Suche (Transact-SQL)