適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
特定のテーブルのフルテキスト インデックス内のすべてのプロパティ関連コンテンツを返します。 これには、そのフルテキスト インデックスに関連付けられている検索プロパティ リストによって登録されたすべてのプロパティに属するすべてのデータが含まれます。
sys.dm_fts_index_keywords_by_property これは動的な管理機能であり、インデックス時にIFiltersによって送信された登録プロパティや、各インデックス文書内のすべてのプロパティの正確な内容を確認できます。
すべてのドキュメントレベルのコンテンツ(プロパティ関連コンテンツを含む)を見るには、 sys.dm_fts_index_keywords_by_documentをご覧ください。
より高レベルの全文索引情報を見るには、 sys.dm_fts_index_keywordsをご覧ください。
検索プロパティ リストの詳細については、「 検索プロパティ リストを使用したドキュメント プロパティの検索」を参照してください。
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_propertyの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_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_propertiesとsys.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