次の方法で共有


sys.dm_fts_index_keywords_by_document (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance 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()関数の呼び出し。 この関数は、データベース名を受け取り、データベース ID を返します。sys.dm_fts_index_keywords_by_document はこの ID を使用して指定されたデータベースを検索します。 場合 database_name は省略すると、現在のデータベース ID が返されます。

object_id('table_name')
OBJECT_ID()関数の呼び出し。 この関数はテーブル名を受け取り、検査するフルテキスト インデックスを含むテーブルのテーブル ID を返します。

返されるテーブル

データ型 説明
キーワード nvarchar (4000) フルテキスト インデックスに格納されているキーワードの 16 進数表記です。

注: OxFF は、ファイルまたはデータセットの末尾を示す特殊文字を表します。
display_term nvarchar (4000) 人間が判読できるキーワードの形式。 この形式は、フルテキスト インデックスに格納されている内部形式から派生します。

注: OxFF は、ファイルまたはデータセットの末尾を示す特殊文字を表します。
column_id int 現在のキーワードのインデックスが作成された列の ID。
document_id int 現在の用語のインデックスが作成されたドキュメントまたは行の ID。 この ID は、そのドキュメントまたは行のフルテキスト キー値に対応します。
occurrence_count int document_idで示されるドキュメントまたは行の現在のキーワードの出現回数。 'search_property_name' が指定されている場合、occurrence_countは、ドキュメントまたは行内の指定した検索プロパティ内の現在のキーワードの出現回数のみを表示します。

解説

sys.dm_fts_index_keywords_by_document から返される情報は、特に次の項目を確認するのに役立ちます。

  • フルテキスト インデックスに含まれるキーワードの合計数。

  • キーワードが特定のドキュメントまたは行の一部であるかどうか。

  • フルテキスト インデックス全体にキーワードが表示される回数。それです:

    (SUM(occurrence_count) WHERE keyword=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 列を結合します。 timestamp列は SQL Server によって自動生成されるため、挿入時に値を受け取ることができません。 したがって、 timestamp 列を 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 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  
  

アクセス許可

フルテキスト インデックスに含まれる列に対する SELECT 権限と、CREATE FULL TEXT CATALOG 権限が必要です。

A. ドキュメント レベルでフルテキスト インデックス コンテンツを表示する

次の使用例は、AdventureWorks2022 サンプル データベースのHumanResources.JobCandidate テーブルのドキュメント レベルでフルテキスト インデックスの内容を表示します。

Note

このインデックスを作成するには、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)
フルテキスト インデックスのパフォーマンスの向上