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 associé à la table spécifiée.

sys.dm_fts_index_keywords_by_document est une fonction de gestion dynamique.

Pour afficher des informations sur l'index de recherche en texte intégral de niveau supérieur

Pour consulter des informations à propos du contenu au niveau de la propriété relatif à une propriété de document

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 actuelle.

  • 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. Lorsque ' search_property_name ' est spécifié, occurrence_count affiche uniquement le nombre d'occurrences du mot clé actuel dans la propriété de recherche spécifiée dans le document ou la ligne.

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 clé de texte intégral est un type de données entier, 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 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. Ensuite, 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 au moment de l'insertion, car 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 l'autorisation SELECT sur les colonnes couvertes par l'index de recherche en texte intégral et les autorisations CREATE FULLTEXT CATALOG.

Exemples

A.Affichage du 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 AdventureWorks.

[!REMARQUE]

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('AdventureWorks'), 
object_id('HumanResources.JobCandidate'));
GO

Voir aussi

Référence

Fonctions et vues de gestion dynamique liées à la recherche en texte intégral et à la recherche sémantique (Transact-SQL)

sys.dm_fts_index_keywords (Transact-SQL)

sys.dm_fts_index_keywords_by_property (Transact-SQL)

sp_fulltext_keymappings (Transact-SQL)

Concepts

Recherche en texte intégral (SQL Server)

Améliorer les performances des index de recherche en texte intégral