sys.dm_fts_index_keywords_by_property(Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 SQL 資料庫

傳回指定數據表之全文檢索索引中的所有屬性相關內容。 這包括屬於與該全文檢索索引相關聯之搜尋屬性清單所註冊之任何屬性的所有數據。

sys.dm_fts_index_keywords_by_property 是一個動態管理功能,讓你能看到索引時 IFilter 發出的註冊屬性,以及每個索引文件中每個屬性的精確內容。

如需搜尋屬性清單的相關信息,請參閱 使用搜尋屬性清單搜尋檔屬性。

Syntax

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

引數

DB_ID(「database_name')

呼叫 DB_ID 函式。 DB_ID 是 智力。此函式接受資料庫名稱並回傳資料庫 ID,該 sys.dm_fts_index_keywords_by_property ID 用於尋找指定的資料庫。 如果 省略database_name ,則會傳回目前的資料庫標識符。

OBJECT_ID(「table_name')

呼叫 OBJECT_ID 函式。 OBJECT_ID 是 智力。此函式接受資料表名稱,並回傳包含全文索引的表格 ID。

傳回的資料表

欄位名稱 資料類型 可空值 描述
keyword 1 varbinary(128) No 儲存在全文檢索索引內的關鍵詞十六進位表示法。
display_term 1 nvarchar(4000) No 關鍵詞的人類可讀取格式。 此格式衍生自儲存在全文檢索索引中的內部格式。
column_id int No 目前關鍵詞已編製全文檢索索引之數據行的標識碼。
document_id bigint 是的 目前字詞全文檢索索引的文件或數據列標識碼。 此標識碼會對應至該文件或數據列的全文檢索索引鍵值。
property_id int 是的 搜尋屬性的內部屬性 ID,位於你在參數中指定的 OBJECT_ID 表格全文索引中。

10xFF 代表表示檔案或資料集結束的特殊字元。

當指定的屬性新增至搜尋屬性清單時,全文檢索引擎會註冊屬性,並將該屬性清單特定的內部屬性標識碼指派給它。 內部屬性標識碼是整數,對指定的搜尋屬性清單而言是唯一的。 如果給定屬性已在多個搜尋屬性清單中註冊,可能會為每個搜尋屬性清單指定不同的內部屬性識別碼。

Note

內部屬性 ID 與將屬性加入搜尋屬性清單時指定的整數識別碼是不同的。 如需詳細資訊,請參閱 使用搜索屬性清單搜索文件屬性。

欲查看與物業名稱之間的 property_id 關聯,請參見 sys.registered_search_properties。

備註

此動態管理檢視可以回答下列問題:

  • 指定 DocID 的指定屬性上儲存了哪些內容?

  • 索引檔之間的指定屬性有多常見?

  • 哪些文件實際上包含指定的屬性? 如果查詢某個搜尋物件時,沒有找到你預期會找到的文件,這很有用。

當全文鍵欄位為整數資料型態時(如建議),該欄位 document_id 會直接對應到基表中的全文鍵值。

相較之下,當全文鍵欄位使用非整數資料型時, document_id 則不代表基表中的全文鍵。 在這種情況下,要辨識由 回傳 dm_fts_index_keywords_by_property的基表列,你需要將此視圖與 sp_fulltext_keymappings 回傳的結果合併。

您必須先將預存程式的輸出儲存在暫存數據表中,才能聯結它們。 接著你可以將 的document_id欄位與dm_fts_index_keywords_by_property這個儲存程序回傳的欄位連接DocId起來。 時間戳欄位無法在插入時接收值,因為這些值是由 SQL Server 自動產生的。 因此, 時間戳 數據行必須轉換成 varbinary(8) 數據行。 下列範例顯示這些步驟。 在這個例子中, @table_id 是你資料表的 ID,database_name 是資料庫名稱, table_name 是你的資料表名稱。

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

許可

需 SELECT 對全文索引 CREATE FULLTEXT CATALOG 涵蓋欄位及權限取得許可。

Examples

下列範例會從Author範例資料庫數據表Production.Document之全文檢索索引AdventureWorks2025中的 屬性傳回關鍵詞。 範例中使用了 由 KWBPOP 回傳的表格的別名sys.dm_fts_index_keywords_by_property,並利用內部連接來組合來自 sys.registered_search_properties 和 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