sp_fulltext_keymappings (Transact-SQL)
ドキュメント識別子 (DocId) とフルテキスト キー値の間のマッピングを返します。DocId 列には、フルテキスト インデックスが作成されているテーブルの特定のフルテキスト キー値にマップされる bigint 整数値が含まれています。検索条件に一致する DocId 値は、Full-Text Engine からデータベース エンジンに渡され、そこでクエリ対象のベース テーブルのフルテキスト キー値にマップされます。フルテキスト キー列は、テーブルの 1 つの列で必要な一意インデックスです。
構文
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 が検出された場合。
例
注意 |
---|
このセクションの例では、AdventureWorks サンプル データベースの 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 AdventureWorks;
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 AdventureWorks;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO
この例では、次の結果が返されます。
docid |
key |
|
4 |
4 |
4 |
変更履歴
変更内容 |
---|
例を追加しました。 |