sys.dm_fts_index_keywords_by_document (Transact-SQL)

Retourne des informations sur le contenu de niveau document d'un index de recherche en texte intégral pour la table spécifiée. Un mot clé donné peut apparaître dans plusieurs documents.

sys.dm_fts_index_keywords_by_document est une fonction de gestion dynamique.

Notes

Pour afficher des informations d'index de recherche en texte intégral de niveaux supérieurs, au niveau du mot clé, utilisez la fonction de gestion dynamique sys.dm_fts_index_keywords (Transact-SQL).

Syntaxe

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

Arguments

  • db_id('database_name')
    Appel à la fonction DB_ID(). Cette fonction accepte un nom de base de données et retourne l'ID de la base de données, que sys.dm_fts_index_keywords_by_document utilise pour rechercher la base de données spécifiée. Si database_name est omis, la fonction retourne l'ID de la base de données active.

  • object_id('table_name')
    Appel à la fonction OBJECT_ID(). Cette fonction accepte un nom de table et retourne l'ID de la table contenant l'index de recherche en texte intégral à examiner.

Table retournée

Colonne

Type de données

Description

keyword

nvarchar(4000)

Représentation hexadécimale du mot clé stocké dans l'index de recherche en texte intégral.

RemarqueRemarque
OxFF représente le caractère spécial qui indique la fin d'un fichier ou d'un dataset.

display_term

nvarchar(4000)

Format explicite du mot clé. Ce format est dérivé du format interne stocké dans l'index de recherche en texte intégral.

RemarqueRemarque
OxFF représente le caractère spécial qui indique la fin d'un fichier ou d'un dataset.

column_id

int

ID de la colonne à partir de laquelle le mot clé actuel a été indexé en texte intégral.

document_id

int

ID de la ligne ou du document à partir duquel le terme actuel a été indexé en texte intégral. Cet ID correspond à la valeur de clé de texte intégral de cette ligne ou de ce document.

occurrence_count

int

Nombre d'occurrences du mot clé actuel dans la ligne ou le document indiqué par document_id.

Notes

Les informations retournées par sys.dm_fts_index_keywords_by_document sont utiles pour déterminer, entre autres choses, les éléments ci-dessous.

  • Nombre total de mots clés contenus dans un index de recherche en texte intégral.

  • Si un mot clé fait partie d'une ligne ou d'un document donné.

  • Nombre de fois qu'un mot clé apparaît dans l'index de recherche en texte intégral entier, à savoir :

    ( SUM ( occurrence_count ) WHERE keyword=keyword_value )

  • Nombre de fois qu'un mot clé apparaît dans une ligne ou un document donné.

  • Nombre de mots clés contenus dans une ligne ou un document donné.

Vous pouvez également utiliser les informations fournies par sys.dm_fts_index_keywords_by_document pour récupérer tous les mots clés qui appartiennent à une ligne ou à un document donné.

Lorsque la colonne de clé de texte intégral est un type de données Integer, comme cela est recommandé, document_id est directement mappé à la valeur de la clé de texte intégral dans la table de base.

En revanche, lorsque la colonne de clé de texte intégral fait appel à un type de données non entier, document_id ne représente pas la clé de texte intégral dans la table de base. Dans ce cas, pour identifier la ligne dans la table de base qui est retournée par dm_fts_index_keywords_by_document, vous devez joindre cette vue avec les résultats retournés par sp_fulltext_keymappings. Avant de pouvoir les joindre, vous devez stocker la sortie de la procédure stockée dans une table temp. Puis, vous pouvez joindre la colonne document_id de dm_fts_index_keywords_by_document avec la colonne DocId retournée par cette procédure stockée. Notez qu'une colonne timestamp ne peut pas recevoir de valeurs à l'heure d'insertion, parce qu'elles sont générées automatiquement par SQL Server. Par conséquent, la colonne timestamp doit être convertie en colonnes varbinary(8). L'exemple suivant affiche ces étapes. Dans cet exemple, table_id est l'ID de votre table, database_name est le nom de votre base de données et table_name est le nom de votre table.

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

Autorisations

Requiert les autorisations CREATE FULLTEXT CATALOG et SELECT sur les colonnes couvertes par l'index de recherche en texte intégral.

Exemples

A. Afficher le contenu de l'index de recherche en texte intégral au niveau du document

L'exemple suivant affiche le contenu de l'index de recherche en texte intégral au niveau du document dans la table HumanResources.JobCandidate de l'exemple de base de données AdventureWorks2008R2.

Notes

Vous pouvez créer cet index en exécutant l'exemple fourni pour la table HumanResources.JobCandidate dans CREATE FULLTEXT INDEX (Transact-SQL).

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