次の方法で共有


sp_fulltext_keymappings (Transact-SQL)

 

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

適用対象: SQL Server (SQL Server 2008: から現在のバージョンまで)、SQL Database V12。

トピック リンク アイコン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 値が無効な場合、結果は返されません。 フルテキスト キー値の詳細については、「フルテキスト インデックスの管理」を参照してください。

重要

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_iddocid

table_iddocid のみを指定する場合、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

参照

フルテキスト検索およびセマンティック検索ストアド プロシージャ (Transact-SQL)