sys.dm_fts_index_keywords_by_property (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Retourne tout le contenu en rapport avec les propriétés dans l'index de recherche en texte intégral d'une table donnée. Cela inclut toutes les données qui appartiennent à une propriété inscrite par la liste de propriétés de recherche associée à cet index de recherche en texte intégral.

sys.dm_fts_index_keywords_by_property est une fonction de gestion dynamique qui vous permet de voir quelles propriétés enregistrées ont été émises par IFilters au moment de l’index, ainsi que le contenu exact de chaque propriété dans chaque document indexé.

Pour plus d’informations sur les listes de propriétés de recherche, consultez Propriétés de document de recherche avec les listes de propriétés de recherche.

Syntax

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

Arguments

DB_ID('database_name')

Un appel à la fonction DB_ID . DB_ID est int. Cette fonction accepte un nom de base de données et renvoie l’identifiant de la base de données, qui sys.dm_fts_index_keywords_by_property sert à trouver 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')

Un appel à la fonction OBJECT_ID . OBJECT_ID est int. Cette fonction accepte un nom de table et renvoie l’ID de la table contenant l’index texte intégral à inspecter.

Table retournée

Nom de la colonne Type de données Pouvant être nul Description
keyword 1 varbinary(128) Non Représentation hexadécimale du mot clé stocké dans l'index de recherche en texte intégral.
display_term 1 nvarchar(4000) Non Format explicite du mot clé. Ce format est dérivé du format interne stocké dans l'index de recherche en texte intégral.
column_id int Non ID de la colonne à partir de laquelle le mot clé actuel a été indexé en texte intégral.
document_id bigint Oui 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.
property_id int Oui L’ID interne de la propriété de recherche dans l’index texte intégral du tableau que vous avez spécifié dans le OBJECT_ID paramètre.

10xFF représente le caractère spécial qui indique la fin d’un fichier ou d’un jeu de données.

Lorsqu'une propriété donnée est ajoutée à une liste de propriétés de recherche, le moteur d'indexation et de recherche en texte intégral inscrit la propriété et lui affecte un ID de propriété interne qui est spécifique à cette liste de propriétés. L'ID de propriété interne, qui est un entier, est unique à une liste de propriétés de recherche donnée. Si une propriété donnée est enregistrée pour plusieurs listes de propriétés de recherche, un ID de propriété interne différent peut être affecté pour chaque liste de propriétés de recherche.

Note

L’identifiant interne de propriété est distinct de l’identifiant entier de propriété spécifié lors de l’ajout de la propriété à la liste de propriétés de recherche. Pour plus d’informations, consultez Rechercher les propriétés du document à l’aide des listes de propriétés de recherche.

Pour voir l’association entre property_id et le nom de la propriété, voir sys.registered_search_properties.

Remarques

Cette vue de gestion dynamique peut répondre aux questions telles que celles-ci :

  • Quel contenu est stocké sur une propriété donnée pour un DocID donné ?

  • Quels sont les éléments communs d'une propriété donnée parmi les documents indexés ?

  • Quels documents contiennent réellement une propriété donnée ? C’est utile si une requête sur une propriété de recherche donnée ne retourne pas un document que vous vous attendiez à trouver.

Lorsque la colonne de clé en texte intégral est un type de données entier, comme recommandé, elle document_id correspond directement à la valeur de la clé en texte intégral dans la table de base.

En revanche, lorsque la colonne de la clé en texte intégral utilise un type de données non entier, document_id elle ne représente pas la clé en 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_property, vous devez relier cette vue aux résultats rendus 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 relier la document_id colonne de dm_fts_index_keywords_by_property avec la DocId colonne retournée par cette procédure stockée. 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 AS INT = DB_ID(N'database_name');
DECLARE @table_id AS INT = OBJECT_ID(N'table_name');

INSERT INTO #MyTempTable
EXECUTE sp_fulltext_keymappings @table_id;

SELECT *
FROM sys.dm_fts_index_keywords_by_property(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Nécessite SELECT une autorisation sur les colonnes couvertes par l’index intégral et CREATE FULLTEXT CATALOG les permissions.

Examples

L'exemple suivant retourne des mots clés de la propriété Author dans l'index de recherche en texte intégral de la table Production.Document de l'exemple de base de données AdventureWorks2025. L’exemple utilise l’alias KWBPOP pour la table retournée par sys.dm_fts_index_keywords_by_property L’exemple utilise des jointures internes pour combiner les colonnes de sys.registered_search_properties et sys.fulltext_indexes.

-- Once the full-text index is configured to support property searching
-- on the Author property, return any keywords indexed for this property.
USE AdventureWorks2025;
GO

SELECT KWBPOP.*
FROM sys.dm_fts_index_keywords_by_property(DB_ID(), OBJECT_ID('Production.Document')) AS KWBPOP
     INNER JOIN sys.registered_search_properties AS RSP
         ON ((KWBPOP.property_id = RSP.property_id)
         AND (RSP.property_name = 'Author'))
     INNER JOIN sys.fulltext_indexes AS FTI
         ON ((FTI.[OBJECT_ID] = OBJECT_ID('Production.Document'))
         AND (RSP.property_list_id = FTI.property_list_id));
GO