sys.dm_fts_index_keywords_by_document(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

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

sys.dm_fts_index_keywords_by_document は動的管理機能です。

Syntax

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

引数

DB_ID(「database_name」)

DB_ID関数への呼び出し。 DB_ID 知性。この関数はデータベース名を受け取り、データベースIDを返します。sys.dm_fts_index_keywords_by_documentはそれを使って指定されたデータベースを見つけます。 場合 database_name は省略すると、現在のデータベース ID が返されます。

OBJECT_ID(「table_name」)

OBJECT_ID関数への呼び出し。 OBJECT_ID 知性。この関数はテーブル名を受け取り、検査する全文インデックスを含むテーブルのテーブルIDを返します。

返されるテーブル

列名 データの種類 ヌラブル Description
keyword 1 varbinary (128) いいえ フルテキスト インデックスに格納されているキーワードの 16 進数表記です。
display_term 1 nvarchar (4000) いいえ 人間が判読できるキーワードの形式。 この形式は、フルテキスト インデックスに格納されている内部形式から派生します。
column_id int いいえ 現在のキーワードのインデックスが作成された列の ID。
document_id bigint はい 現在の用語のインデックスが作成されたドキュメントまたは行の ID。 この ID は、そのドキュメントまたは行のフルテキスト キー値に対応します。
occurrence_count int はい document_idで示される文書または行内で現在のキーワードの出現回数。 「search_property_name」を指定すると、 occurrence_count は指定された検索プロパティ内の現在のキーワードの出現回数のみを表示します。

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

注釈

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_documentdocument_id列と、このストアドプロシージャが返すDocId列を結合できます。 タイムスタンプカラムは挿入時に値を受信できません。なぜなら、値は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 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_document(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

全文索引でカバーされている列の権限とCREATE FULLTEXT CATALOG権限SELECT必要です。

Examples

A. 文書レベルで全文索引コンテンツを表示

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

Note

このインデックスは、HumanResources.JobCandidateCREATE FULLTEXT INDEXテーブルの例を実行することで作成できます。

SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO