sys.dm_fts_index_keywords_by_document (Transact-SQL)
適用於:SQL ServerAzure SQL 受控執行個體Analytics Platform System (PDW)
傳回與指定之資料表相關聯之全文檢索索引的檔層級內容相關資訊。
sys.dm_fts_index_keywords_by_document是動態管理功能。
若要檢視較高層級的全文檢索索引資訊
若要檢視與檔案屬性相關的屬性層級內容相關資訊
語法
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name'), OBJECT_ID('table_name')
)
引數
db_id(' database_name ')
對 DB_ID() 函式的 呼叫。 此函式會接受資料庫名稱並傳回資料庫識別碼,sys.dm_fts_index_keywords_by_document用來尋找指定的資料庫。 如果 省略database_name ,則會傳回目前的資料庫識別碼。
object_id(' table_name ')
呼叫 OBJECT_ID() 函式。 此函式會接受資料表名稱,並傳回包含要檢查之全文檢索索引之資料表的資料表識別碼。
傳回的資料表
資料行 | 資料類型 | 描述 |
---|---|---|
keyword | nvarchar(4000) | 儲存在全文檢索索引內的關鍵字十六進位標記法。 注意:OxFF 代表表示檔案或資料集結尾的特殊字元。 |
display_term | nvarchar(4000) | 關鍵字的人類可讀取格式。 此格式衍生自儲存在全文檢索索引中的內部格式。 注意:OxFF 代表表示檔案或資料集結尾的特殊字元。 |
column_id | int | 目前關鍵字已編制全文檢索索引之資料行的識別碼。 |
document_id | int | 目前字詞全文檢索索引的檔或資料列識別碼。 此識別碼會對應至該檔或資料列的全文檢索索引鍵值。 |
occurrence_count | int | 檔或資料列中目前關鍵字的出現次數,以 document_id 表示。 指定 ' search_property_name ' 時,occurrence_count只會顯示檔或資料列中指定搜尋屬性中目前關鍵字的出現次數。 |
備註
sys.dm_fts_index_keywords_by_document傳回的資訊有助於找出下列各項,以及其他事項:
全文檢索索引包含的關鍵字總數。
關鍵字是否為指定檔或資料列的一部分。
關鍵字出現在整個全文檢索索引中的次數;那是:
( SUM ( occurrence_count ) WHERE 關鍵字 = keyword_value )
關鍵字出現在指定的檔或列中的次數。
指定檔或資料列包含多少個關鍵字。
此外,您也可以使用 sys.dm_fts_index_keywords_by_document 所提供的資訊來擷取屬於指定檔或資料列的所有關鍵詞。
當全文檢索索引鍵資料行是整數資料類型時,document_id會直接對應至基表中的全文檢索索引鍵值。
相反地,當全文檢索索引鍵資料行使用非整數資料類型時,document_id不會代表基表中的全文檢索索引鍵。 在此情況下,若要識別dm_fts_index_keywords_by_document所傳回基表中的資料列,您必須將這個檢視與sp_fulltext_keymappings 傳 回的結果聯結。 您必須先將預存程式的輸出儲存在暫存資料表中,才能聯結它們。 然後,您可以將dm_fts_index_keywords_by_document的 document_id 資料行與這個預存程式所傳回的 DocId 資料行聯結。 請注意, 時間戳記 資料行無法在插入時接收值,因為它們是由 SQL Server 自動產生。 因此, 時間戳記 資料行必須轉換成 Varbinary(8) 資料行。 下列範例顯示這些步驟。 在此範例中, table_id 是資料表的識別碼, database_name 是您資料庫的名稱, table_name 是資料表的名稱。
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
權限
需要全文檢索索引和 CREATE FULLTEXT CATALOG 許可權所涵蓋資料行的 SELECT 許可權。
範例
A. 在檔層級顯示全文檢索索引內容
下列範例會顯示範例資料庫中檔層級 HumanResources.JobCandidate
AdventureWorks2022
全文檢索索引的內容。
注意
您可以執行 CREATE FULLTEXT INDEX (Transact-SQL) 中 針對 HumanResources.JobCandidate
資料表提供的範例來建立此索引。
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),
object_id('HumanResources.JobCandidate'));
GO
另請參閱
全文檢索搜尋和語意搜尋動態管理檢視和函式 (Transact-SQL)
全文檢索搜尋
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)
改善全文檢索索引的效能
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應