sp_fulltext_keymappings (Transact-SQL)

Retourne les mappages entre identificateurs de document (DocIds) et valeurs de clé de texte intégral. La colonne DocId contient les valeurs d'un entier bigint mappé à une valeur de clé de texte intégral particulière dans une table indexée en texte intégral. Les valeurs de DocId qui répondent à une condition de recherche sont transmises du moteur de texte intégral au moteur de base de données, où elles sont mappées aux valeurs de clé de texte intégral de la table de base interrogée. La colonne clé de texte intégral est un index unique qui est requis sur une seule colonne de la table.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

Paramètres

  • table_id
    ID de l'objet de la table indexée en texte intégral. Si vous spécifiez un table_id non valide, une erreur est retournée. Pour plus d'informations sur l'obtention de l'ID de l'objet d'une table, consultez OBJECT_ID (Transact-SQL).

  • docid
    Identificateur de document (DocId) interne qui correspond à la valeur de la clé. Une valeur docid non valide ne retourne pas de résultat.

  • key
    Valeur de la clé de texte intégral pour une table spécifiée. Une valeur key non valide ne retourne pas de résultat. Pour plus d'informations sur les valeurs de clés de texte intégral , consultez Gérer les index de recherche en texte intégral.

Important

Pour plus d'informations sur l'utilisation d'un, de deux ou de trois paramètres, consultez « Remarques » plus loin dans cette rubrique.

Valeurs des codes de retour

Aucune.

Jeux de résultats

Nom de la colonne

Type de données

Description

DocId

bigint

Colonne de l'ID interne de document (DocId) qui correspond à la valeur de la clé.

Key

*

Valeur de la clé de texte intégral pour une table spécifiée.

Si aucune clé de texte intégral n'existe dans la table de mappage, un ensemble de lignes vide est retourné.

* Le type de données Key est identique à celui du type de données de la colonne clé de texte intégral dans la table de base.

Autorisations

Cette fonction est publique et ne requiert pas d'autorisation spéciale.

Notes

Le tableau ci-dessous décrit l'impact de l'utilisation d'un, de deux ou de trois paramètres.

Cette liste de paramètres…

Donne le résultat suivant...

table_id

Lorsqu'il est invoqué avec le paramètre table_id uniquement, sp_fulltext_keymappings retourne toutes les valeurs de clé de texte intégral (Key) de la table de base spécifiée, avec le DocId qui correspond à chaque clé. Cela inclut des clés qui sont en attente de suppression.

Cette fonction est utile pour la résolution de divers problèmes. Elle est particulièrement utile pour afficher le contenu d'index de recherche en texte intégral lorsque la clé de texte intégral sélectionnée n'est pas un type de données integer. Cela implique de joindre les résultats de sp_fulltext_keymappings aux résultats de sys.dm_fts_index_keywords_by_document. Pour plus d'informations, consultez sys.dm_fts_index_keywords_by_document (Transact-SQL).

En général, toutefois, nous vous recommandons, si possible, d'exécuter sp_fulltext_keymappings avec les paramètres qui spécifient une clé de texte intégral spécifique ou DocId. C'est beaucoup plus efficace que retourner un mappage de clés entier, surtout pour une table très volumineuse pour laquelle le coût de performance lié au retour d'un mappage de clés entier peut être conséquent.

table_id, docid

Si seuls table_id et docid sont spécifiés, docid doit avoir une valeur autre que NULL et spécifier un DocId valide dans la table spécifiée. Cette fonction est utile pour isoler la clé de texte intégral personnalisée de la table de base qui correspond au DocId d'un index de recherche en texte intégral particulier.

table_id, NULL, key

Si trois paramètres sont présents, le deuxième paramètre doit être NULL, et key doit être non NULL et spécifier une valeur de clé de texte intégral valide à partir de la table spécifiée. Cette fonction est utile pour isoler le DocId qui correspond à une clé de texte intégral particulière de la table de base.

Une erreur est retournée dans l'une des conditions suivantes :

  • Vous spécifiez un table_id non valide.

  • La table n'est pas indexée en texte intégral.

  • Une valeur NULL est rencontrée pour un paramètre qui peut être non NULL

Exemples

[!REMARQUE]

Les exemples de cette section utilisent la table Production.ProductReview de l'exemple de base de données AdventureWorks2012. Vous pouvez créer cet index en exécutant l'exemple fourni pour la table ProductReview dans CREATE FULLTEXT INDEX (Transact-SQL).

A.Obtention de toutes les valeurs de clés et valeurs DocId

L'exemple suivant utilise une instruction DECLARE pour créer une variable locale, @table\_id, et lui assigner comme valeur l'ID de la table ProductReview. L'exemple exécute sp_fulltext_keymappings qui spécifie @table\_id pour le paramètre table_id.

[!REMARQUE]

L'utilisation de sp_fulltext_keymappings avec uniquement le paramètre table_id convient aux petites tables.

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

Cet exemple retourne toutes les clés DocIds et toutes les clés de texte intégral de la table, comme suit :

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B.Obtention de la valeur DocId pour une valeur de clé spécifique

L'exemple suivant utilise une instruction DECLARE pour créer une variable locale, @table\_id, et lui assigner comme valeur l'ID de la table ProductReview. L'exemple exécute sp_fulltext_keymappings qui spécifie @table\_id pour le paramètre table_id, NULL pour le paramètre docid et 4 pour le paramètre key.

[!REMARQUE]

L'utilisation de sp_fulltext_keymappings avec uniquement le paramètre table_id convient aux petites tables.

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

Cet exemple retourne les résultats suivants.

docid

key

4

4

4

Voir aussi

Référence

Procédures stockées de recherche en texte intégral et de recherche sémantique (Transact-SQL)