sp_fulltext_keymappings (Transact-SQL)
ドキュメント識別子 (DocId) とフルテキスト キー値の間のマッピングを返します。DocId 列には、フルテキスト インデックスが作成されているテーブルの特定のフルテキスト キー値にマップされる bigint 整数値が含まれています。 検索条件に一致する DocId 値は、Full-Text Engine からデータベース エンジンに渡され、そこでクエリ対象のベース テーブルのフルテキスト キー値にマップされます。 フルテキスト キー列は、テーブルの 1 つの列で必須の一意インデックスです。
適用対象: SQL Server (SQL Server 2008: から現在のバージョンまで)、SQL Database V12。 |
構文
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 値が無効な場合、結果は返されません。 フルテキスト キー値の詳細については、「フルテキスト インデックスの管理」を参照してください。
重要
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 が検出された場合。
使用例
注意
このセクションの例では、AdventureWorks2012 サンプル データベースの 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 AdventureWorks2012; 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 AdventureWorks2012; GO DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview'); EXEC sp_fulltext_keymappings @table_id, NULL, 4; GO
この例では、次の結果が返されます。
docid |
key |
|
4 |
4 |
4 |