sys.dm_fts_index_keywords_by_property (Transact-SQL)

適用対象:SQL Server

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

sys.dm_fts_index_keywords_by_propertyは、インデックス時に IFilters によって出力された登録プロパティと、インデックスが作成された各ドキュメント内のすべてのプロパティの正確な内容を確認できる動的管理機能です。

すべてのドキュメント レベルのコンテンツ (プロパティに関連するコンテンツを含む) を表示するには

上位レベルのフルテキスト インデックス情報を表示するには

注意

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

構文

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

引数

db_id('database_name')
DB_ID() 関数の呼び出し。 この関数は、データベース名を受け取り、指定したデータベースを検索するために使用sys.dm_fts_index_keywords_by_propertyデータベース ID を返します。 場合 database_name は省略すると、現在のデータベース ID が返されます。

object_id('table_name')
OBJECT_ID() 関数の呼び出し。 この関数は、テーブル名を受け取り、検査するフルテキスト インデックスを含むテーブルのテーブル ID を返します。

返されるテーブル

データ型 説明
キーワード (keyword) nvarchar (4000) フルテキスト インデックスに格納されているキーワードの 16 進数表記です。

注: OxFF は、ファイルまたはデータセットの末尾を示す特殊文字を表します。
display_term nvarchar (4000) キーワード (keyword)の人間が判読できる形式。 この形式は、フルテキスト インデックスに格納されている内部形式から派生します。

注: OxFF は、ファイルまたはデータセットの末尾を示す特殊文字を表します。
column_id int 現在のキーワード (keyword)がフルテキスト インデックスが作成された列の ID。
document_id int 現在の用語のインデックスが作成されたドキュメントまたは行の ID。 この ID は、そのドキュメントまたは行のフルテキスト キー値に対応します。
property_id int OBJECT_ID('table_name') パラメーターで指定したテーブルのフルテキスト インデックス内の検索プロパティの内部プロパティ ID。

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

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

property_idとプロパティ名の間の関連付けを表示するには:
sys.registered_search_properties (Transact-SQL)

注釈

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

  • 特定の 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 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_property   
   ( @db_id, @table_id ) kbd  
   INNER JOIN #MyTempTable tt ON tt.[docid]=kbd.document_id;  
GO  
  

アクセス許可

フルテキスト インデックスに含まれる列に対する SELECT 権限と、CREATE FULL TEXT CATALOG 権限が必要です。

次の例では、Author サンプル データベースの Production.Document テーブルのフルテキスト インデックスにある AdventureWorks プロパティからキーワードが返されます。 この例では、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 AdventureWorks2022;  
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  

参照

フルテキスト検索
フルテキスト インデックスのパフォーマンスの向上
sp_fulltext_keymappings (Transact-SQL)
sys.dm_fts_index_keywords_by_document (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.registered_search_properties (Transact-SQL)
sys.registered_search_property_lists (Transact-SQL)
検索プロパティ リストを使用したドキュメント プロパティの検索