共用方式為


sys.dm_fts_index_keywords_by_document (Transact-SQL)

適用於: SQL Server Azure 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傳回的信息有助於找出下列各項,以及其他事項:

  • 全文檢索索引包含的關鍵詞總數。

  • 關鍵詞是否為指定檔或數據列的一部分。

  • 關鍵詞出現在整個全文檢索索引中的次數;那是:

    SUMoccurrence_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.JobCandidateAdventureWorks2022全文檢索索引的內容。

注意

您可以執行 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)
改善全文檢索索引的效能