適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
指定したテーブルに関連付けられているフルテキスト インデックスのドキュメント レベルのコンテンツに関する情報を返します。
sys.dm_fts_index_keywords_by_document は動的管理機能です。
より高レベルの全文索引情報を見るには、 sys.dm_fts_index_keywordsをご覧ください。
文書プロパティに関連するプロパティレベルのコンテンツに関する情報を見るには、 sys.dm_fts_index_keywords_by_propertyをご覧ください。
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_documentのdocument_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.JobCandidateのCREATE FULLTEXT INDEXテーブルの例を実行することで作成できます。
SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO