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.
[!REMARQUE]
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 |
---|---|---|
mot clé |
nvarchar(8000) |
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 dataset.
|
display_term |
nvarchar(8000) |
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 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. 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