sys.dm_fts_index_keywords_by_document (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

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 les informations d’index de recherche en texte intégral de niveau supérieur

Pour afficher des informations sur le contenu au niveau de la propriété lié à 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 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
mot clé nvarchar(4000) Représentation hexadécimale du mot clé stocké dans l'index de recherche en texte intégral.

Remarque : OxFF représente le caractère spécial qui indique la fin d’un fichier ou d’un jeu de données.
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.

Remarque : OxFF représente le caractère spécial qui indique la fin d’un fichier ou d’un jeu de données.
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 le document ou la ligne 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.

Remarques

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, mot clé=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 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 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 de la table de base retournée par dm_fts_index_keywords_by_document, vous devez joindre cette vue aux 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 d’horodatage 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.

Examples

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

Note

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

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

Voir aussi

Fonctions et vues de gestion dynamique de recherche en texte intégral et de recherche sémantique (Transact-SQL)
Recherche en texte intégral
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)
Améliorer les performances des index de recherche en texte intégral