sys.dm_fts_index_keywords_by_document (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar information om dokumentnivåinnehållet i ett fulltextindex kopplat till den angivna tabellen.

sys.dm_fts_index_keywords_by_document är en dynamisk ledningsfunktion.

Syntax

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

Arguments

DB_ID('database_name')

En uppmaning till DB_ID funktion. DB_ID är int. Denna funktion accepterar ett databasnamn och returnerar databas-ID:t, som sys.dm_fts_index_keywords_by_document används för att hitta den angivna databasen. Om database_name utelämnas returneras det aktuella databas-ID:t.

OBJECT_ID('table_name')

En uppmaning till OBJECT_ID funktion. OBJECT_ID är int. Denna funktion accepterar ett tabellnamn och returnerar tabell-ID:t för tabellen som innehåller fulltextindexet för inspektering.

Tabellen returneras

Kolumnnamn Datatyp Nullbar Beskrivning
keyword 1 varbinary(128) No Den hexadecimala representationen av nyckelordet som lagras i fulltextindexet.
display_term 1 nvarchar(4000) No Det människoläsbara formatet av nyckelordet. Detta format härstammar från det interna formatet som lagras i fulltextindexet.
column_id int No ID för kolumnen från vilken det aktuella nyckelordet indexerades i fulltext.
document_id bigint Ja ID för dokumentet eller raden från vilken den aktuella termen indexerades i fulltext. Detta ID motsvarar fulltextnyckelvärdet för det dokumentet eller raden.
occurrence_count int Ja Antal förekomster av det aktuella nyckelordet i dokumentet eller raden som anges med document_id. När 'search_property_name' anges occurrence_count visas endast antalet förekomster av det aktuella nyckelordet i den angivna sökegenskapen inom dokumentet eller raden.

10xFF representerar det specialtecken som anger slutet på en fil eller dataset.

Anmärkningar

Informationen som återlämnas är sys.dm_fts_index_keywords_by_document användbar för att ta reda på följande, bland annat:

  • Det totala antalet nyckelord som ett fulltextindex innehåller.
  • Oavsett om ett nyckelord är en del av ett givet dokument eller en rad.
  • Hur många gånger ett nyckelord förekommer i hela fulltextindexet. Det vill säga, SUM(occurrence_count) WHERE keyword = <keyword_value>
  • Hur många gånger ett nyckelord förekommer i ett givet dokument eller rad.
  • Hur många nyckelord ett givet dokument eller rad innehåller.

Du kan också använda informationen som tillhandahålls av sys.dm_fts_index_keywords_by_document för att hämta alla nyckelord som tillhör ett givet dokument eller rad.

När fulltextnyckelkolumnen är en heltalsdatatyp, som rekommenderats, mappas den document_id direkt till fulltextnyckelvärdet i bastabellen.

Till skillnad från detta, när fulltextnyckelkolumnen använder en icke-heltalsdatatyp, document_id representerar inte fulltextnyckeln i bastabellen. I detta fall, för att identifiera raden i bastabellen som returneras av dm_fts_index_keywords_by_document, måste du ansluta denna vy till resultaten som returneras av sp_fulltext_keymappings.

Innan du kan ansluta dem måste du lagra utdata från den lagrade proceduren i en tillfällig tabell. Sedan kan du ansluta kolumnen document_id i dm_fts_index_keywords_by_document med kolumnen DocId som returneras av denna lagrade procedur. En tidsstämpelkolumn kan inte ta emot värden vid insättningstidpunkten, eftersom de genereras automatiskt av SQL Server. Därför måste tidsstämpelkolumnen konverteras till varbinär(8) kolumner. Följande exempel visar dessa steg. I det här exemplet är @table_id ID:t för din tabell, database_name är namnet på din databas och table_name är namnet på din tabell.

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_document(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Kräver SELECT tillstånd för de kolumner som täcks av fulltextindexet och CREATE FULLTEXT CATALOG behörigheter.

Examples

A. Visa fulltextindexinnehåll på dokumentnivå

Följande exempel visar innehållet i fulltextindexet på dokumentnivå i HumanResources.JobCandidate tabellen för AdventureWorks2025 exempeldatabasen.

Note

Du kan skapa detta index genom att köra exemplet som ges för HumanResources.JobCandidate tabellen i CREATE FULLTEXT INDEX.

SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO