sys.dm_fts_index_keywords_by_property (Transact-SQL)

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

Returnerar allt egenskapsrelaterat innehåll i fulltextindexet för en given tabell. Detta inkluderar all data som tillhör någon egendom som registreras av sökobjektlistan kopplad till det fulltextindexet.

sys.dm_fts_index_keywords_by_property är en dynamisk hanteringsfunktion som gör det möjligt att se vilka registrerade egenskaper som emitterades av IFilters vid indextidpunkten, samt det exakta innehållet för varje egenskap i varje indexerat dokument.

För information om att söka i fastighetslistor, se Sök dokumentfastigheter med sök i fastighetslistor.

Syntax

sys.dm_fts_index_keywords_by_property
(
    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_property 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.
property_id int Ja Internt egenskaps-ID för sökegenskapen inom fulltextindexet för tabellen som du angav i parametern OBJECT_ID .

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

När en given egenskap läggs till i en sökegenskapslista registrerar Full-Text-motorn egenskapen och tilldelar den ett internt egenskaps-ID som är specifikt för den egenskapslistan. Det interna egenskaps-ID:t, som är ett heltal, är unikt för en given sök-egenskapslista. Om en viss egenskap har registrerats för flera sökegenskapslistor kan ett annat internt egenskaps-ID tilldelas för varje sökegenskapslista.

Note

Det interna egenskaps-ID skiljer sig från egenskapsheltalsidentifieraren som anges när egenskapen läggs till i sökegenskapslistan. Mer information finns i Egenskaper för sökdokument med sökegenskapslistor.

För att se kopplingen mellan property_id och fastighetens namn, se sys.registered_search_properties.

Anmärkningar

Denna dynamiska förvaltningsvy kan besvara frågor som följande:

  • Vilket innehåll lagras på en given egendom för ett givet DocID?

  • Hur vanlig är en viss fastighet bland de indexerade dokumenten?

  • Vilka dokument innehåller egentligen en viss fastighet? Detta är användbart om en sökning på en viss sökegenskap inte ger ett dokument som du förväntade dig att hitta.

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_property, 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_property 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_property(@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

Följande exempel returnerar nyckelord från egenskapen Author i fulltextindexet i Production.Document tabellen i AdventureWorks2025 exempeldatabasen. Exemplet använder aliaset KWBPOP för tabellen som returneras av sys.dm_fts_index_keywords_by_property Exemplet använder inre sammanfogningar för att kombinera kolumner från sys.registered_search_properties och 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