次の方法で共有


sys.dm_fts_index_keywords_by_document (Transact-SQL)

指定されたテーブルに関連付けられているフルテキスト インデックスのドキュメント レベルのコンテンツに関連する情報を返します。

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 を返します。

返されるテーブル

データ型

説明

keyword

nvarchar(4000)

フルテキスト インデックスに格納されているキーワードの 16 進数表記です。

注意

0xFF は、ファイルまたはデータセットの終わりを示す特殊文字を表します。

display_term

nvarchar(4000)

人間が判読できる形式のキーワードです。 この形式は、フルテキスト インデックスに格納されている内部形式から派生しています。

注意

0xFF は、ファイルまたはデータセットの終わりを示す特殊文字を表します。

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. ドキュメント レベルでフルテキスト インデックス コンテンツを表示する

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

注意

CREATE FULLTEXT INDEX (Transact-SQL)」の HumanResources.JobCandidate テーブルで提示されている例を実行して、このインデックスを作成することができます。

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks'), 
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)

概念

フルテキスト検索 (SQL Server)

フルテキスト インデックスのパフォーマンスの向上