Share via


sp_fulltext_keymappings (Transact-SQL)

ドキュメント識別子 (DocId) とフルテキスト キー値の間のマッピングを返します。DocId 列には、フルテキスト インデックスが作成されているテーブルの特定のフルテキスト キー値にマップされる bigint 整数値が含まれています。検索条件に一致する DocId 値は、Full-Text Engine からデータベース エンジンに渡され、そこでクエリ対象のベース テーブルのフルテキスト キー値にマップされます。フルテキスト キー列は、テーブルの 1 つの列で必要な一意インデックスです。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_fulltext_keymappings { table_id | table_id, docid | table_id, NULL, key }

パラメーター

  • table_id
    フルテキスト インデックスが設定されたテーブルのオブジェクト ID。無効な table_id を指定すると、エラーが返されます。テーブルのオブジェクト ID の取得については、「OBJECT_ID (Transact-SQL)」を参照してください。

  • docid
    キー値に対応する内部ドキュメント識別子 (DocId)。docid 値が無効な場合、結果は返されません。ドキュメント識別子の詳細については、「フルテキスト インデックスの構造」を参照してください。

  • key
    指定したテーブルからのフルテキスト キー値。key 値が無効な場合、結果は返されません。フルテキスト キー値の詳細については、「フルテキスト キー列を調査する方法 (Transact-SQL)」を参照してください。

重要な注意事項重要

1 つ、2 つ、または 3 つのパラメーターを使用する方法の詳細については、後の「解説」を参照してください。

リターン コード値

派生しません。

結果セット

列名

データ型

説明

DocId

bigint

キー値に対応する内部ドキュメント識別子 (DocId) 列。

Key

*

指定したテーブルからのフルテキスト キー値。

マッピング テーブルにフルテキスト キーが存在しない場合は、空の行セットが返されます。

* Key のデータ型は、ベース テーブルのフルテキスト キー列のデータ型と同じです。

権限

この関数はパブリックであり、特別な権限は必要ありません。

説明

次の表に、1 つ、2 つ、または 3 つのパラメーターを使用した場合の効果を示します。

パラメーター リスト…

効果…

table_id

table_id パラメーターのみを指定して sp_fulltext_keymappings を呼び出すと、指定したベース テーブルのすべてのフルテキスト キー (Key) 値と、各キーに対応する DocId が返されます。これには削除保留中のキーが含まれます。

この機能は、さまざまな問題をトラブルシューティングする場合に便利です。特に、選択したフルテキスト キーが整数データ型でないときに、フルテキスト インデックス コンテンツを確認する場合に役立ちます。この操作では、sp_fulltext_keymappings の結果と sys.dm_fts_index_keywords_by_document の結果を結合します。詳細については、「sys.dm_fts_index_keywords_by_document (Transact-SQL)」を参照してください。

ただし、通常は、可能であれば特定のフルテキスト キーまたは DocId を指定するパラメーターを指定して sp_fulltext_keymappings を実行することをお勧めします。これは、キー マップ全体を返すよりもはるかに効率的です。特に、キー マップ全体を返すとパフォーマンスが大幅に低下する可能性がある、非常に大きなテーブルの場合に有効です。

table_id, docid

table_id と docid のみを指定する場合、docid は NULL 以外の値でなければならず、指定したテーブルの有効な DocId を指定する必要があります。この機能は、カスタム フルテキスト キーを、特定のフルテキスト インデックスの DocId に対応するベース テーブルから切り離す場合に役立ちます。

table_id, NULL, key

3 つのパラメーターを指定する場合、2 番目のパラメーターは NULL である必要があります。また、key は NULL 以外の値でなければならず、指定したテーブルの有効なフルテキスト キー値を指定する必要があります。この機能は、特定のフルテキスト キーに対応する DocId をベース テーブルから切り離す場合に役立ちます。

次のいずれかの条件に該当する場合は、エラーが返されます。

  • 無効な table_id を指定した場合。

  • テーブルにフルテキスト インデックスが設定されていない場合。

  • NULL 以外の値が許可されるパラメーターについて NULL が検出された場合。

注意

このセクションの例では、AdventureWorks2008R2 サンプル データベースの Production.ProductReview テーブルを使用します。「CREATE FULLTEXT INDEX (Transact-SQL)」の ProductReview テーブルで提示されている例を実行して、このインデックスを作成することができます。

A. すべてのキーと DocId 値を取得する

次の例では、DECLARE ステートメントを使用してローカル変数 @table_id を作成し、ProductReview テーブルの ID をその値として割り当てます。また、sp_fulltext_keymappings を実行し、その際に table_id パラメーターのために @table_id を指定します。

注意

テーブルが小さい場合には、table_id パラメーターだけを付けて sp_fulltext_keymappings を使用するのが適切です。

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

テーブルから次のようにすべての DocIds とフルテキスト キーが返されます。

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B. 特定のキー値の DocId 値を取得する

次の例では、DECLARE ステートメントを使用してローカル変数 @table_id を作成し、ProductReview テーブルの ID をその値として割り当てます。sp_fulltext_keymappings を実行し、その際に table_id パラメーターに @table_id、docid パラメーターに NULL、および key パラメーターに 4 を指定します。

注意

テーブルが小さい場合には、table_id パラメーターだけを指定して sp_fulltext_keymappings を使用するのが適切です。

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

この例では、次の結果が返されます。

docid

key

4

4

4