sys.dm_fts_index_keywords_by_property(Transact-SQL)

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

特定のテーブルのフルテキスト インデックス内のすべてのプロパティ関連コンテンツを返します。 これには、そのフルテキスト インデックスに関連付けられている検索プロパティ リストによって登録されたすべてのプロパティに属するすべてのデータが含まれます。

sys.dm_fts_index_keywords_by_property これは動的な管理機能であり、インデックス時にIFiltersによって送信された登録プロパティや、各インデックス文書内のすべてのプロパティの正確な内容を確認できます。

検索プロパティ リストの詳細については、「 検索プロパティ リストを使用したドキュメント プロパティの検索」を参照してください。

Syntax

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

引数

DB_ID(「database_name」)

DB_ID関数への呼び出し。 DB_ID 知性。この関数はデータベース名を受け取り、データベースIDを返します。sys.dm_fts_index_keywords_by_propertyはそれを使って指定されたデータベースを見つけます。 場合 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 は、そのドキュメントまたは行のフルテキスト キー値に対応します。
property_id int はい OBJECT_IDパラメータで指定したテーブルの全文インデックス内の検索プロパティの内部プロパティID。

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

特定のプロパティが検索プロパティ リストに追加されると、Full-Text Engine はプロパティを登録し、このプロパティ リストに固有の内部プロパティ ID を、そのプロパティに割り当てます。 整数である内部プロパティ ID は、特定の検索プロパティ リストに対して一意です。 特定のプロパティを複数の検索プロパティ リストに登録した場合、検索プロパティ リストごとに異なる内部プロパティ ID が割り当てられる可能性があります。

Note

内部プロパティIDは、プロパティを検索プロパティリストに追加する際に指定される整数識別子とは異なります。 詳細については、「 検索プロパティ リストを使用したドキュメント プロパティの検索」を参照してください。

property_idと物件名との関連については、sys.registered_search_propertiesを参照してください。

注釈

この動的管理ビューでは、次のような質問に回答できます。

  • 特定の DocID の特定のプロパティに格納されているコンテンツは何ですか?

  • 特定のプロパティが、インデックス付きの文書間でどの程度一般的か。

  • 特定のプロパティを実際に含むドキュメントは何ですか? これは、特定の検索プロパティにクエリしても期待していたドキュメントが返ってこない場合に役立ちます。

推奨されるように、全文キーの列が整数データ型の場合、 document_id はベーステーブルの全文キー値に直接対応します。

対照的に、全文キーの列が整数でないデータ型を使う場合、 document_id はベーステーブルの全文キーを表しません。 この場合、 dm_fts_index_keywords_by_propertyが返すベーステーブルの行を特定するには、このビューと sp_fulltext_keymappingsが返す結果を結合する必要があります。

それらを結合する前に、ストアド プロシージャの出力を一時テーブルに格納する必要があります。 その後、dm_fts_index_keywords_by_propertydocument_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_property(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

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

Examples

次の例では、Author サンプル データベースの Production.Document テーブルのフルテキスト インデックスにある AdventureWorks2025 プロパティからキーワードが返されます。 この例では、sys.dm_fts_index_keywords_by_property が返すテーブルのエイリアスKWBPOPを使用しています。この例では、sys.registered_search_propertiessys.fulltext_indexesの列を結合するために内側結合を用いています。

-- Once the full-text index is configured to support property searching
-- on the Author property, return any keywords indexed for this property.
USE AdventureWorks2025;
GO

SELECT KWBPOP.*
FROM sys.dm_fts_index_keywords_by_property(DB_ID(), OBJECT_ID('Production.Document')) AS KWBPOP
     INNER JOIN sys.registered_search_properties AS RSP
         ON ((KWBPOP.property_id = RSP.property_id)
         AND (RSP.property_name = 'Author'))
     INNER JOIN sys.fulltext_indexes AS FTI
         ON ((FTI.[OBJECT_ID] = OBJECT_ID('Production.Document'))
         AND (RSP.property_list_id = FTI.property_list_id));
GO