フルテキスト インデックスの管理
フルテキスト インデックスのプロパティの表示と変更
Management Studio でフルテキスト インデックスのプロパティを表示または変更するには
オブジェクト エクスプローラーで、サーバーを展開します。
[データベース] を展開し、フルテキスト インデックスを含むデータベースを展開します。
[テーブル] を展開します。
フルテキスト インデックスが定義されているテーブルを右クリックし、 [フルテキスト インデックス] コンテキスト メニューの [フルテキスト インデックス] をクリックして、 [プロパティ] をクリックします。 [フルテキスト インデックスのプロパティ] ダイアログ ボックスが表示されます。
[ページの選択] ペインでは、次のいずれかのページを選択できます。
ページ 説明 全般 フルテキスト インデックスの基本的なプロパティが表示されます。 これには、いくつかの変更可能なプロパティと、データベース名、テーブル名、フルテキスト キー列の名前など多数の変更不可能なプロパティが含まれます。 変更可能なプロパティは次のとおりです。
フルテキスト インデックス ストップリスト
フルテキスト インデックス有効
変更の追跡
検索プロパティ リスト
詳細については、「 フルテキスト インデックスのプロパティ ([全般] ページ)」を参照してください。[列] フルテキスト インデックスを作成できるテーブル列が表示されます。 選択した列にフルテキスト インデックスが作成されます。 フルテキスト インデックスに含める列はいくつでも選択できます。 詳細については、「 フルテキスト インデックスのプロパティ ([列] ページ)」を参照してください。 スケジュール このページでは、フルテキスト インデックスを作成するためのテーブルの増分作成を開始する SQL Server エージェント ジョブのスケジュールを作成または管理できます。 詳細については、「 フルテキスト インデックスの作成」をご覧ください。
**大事な**[フルテキスト インデックスのプロパティ] ダイアログ ボックスを終了すると、新しく作成されたすべてのスケジュールがSQL Server エージェント ジョブに関連付けられます (database_nameで増分テーブル作成を開始します。table_name)。[ OK] をクリックします。変更を保存し、[ フルテキスト インデックスのプロパティ ] ダイアログ ボックスを終了します。
インデックスが作成されたテーブルと列のプロパティの表示
OBJECTPROPERTYEX などの複数の Transact-SQL 関数を使用して、さまざまなフルテキスト インデックス作成プロパティの値を取得できます。 この情報は、フルテキスト検索の管理およびトラブルシューティングに役立ちます。
次の表に、インデックス付きテーブルと列に関連するフルテキスト プロパティと、関連する Transact-SQL 関数を示します。
プロパティ | 説明 | 機能 |
---|---|---|
FullTextTypeColumn |
列のドキュメント型情報を保持する、テーブル内の TYPE COLUMN。 | COLUMNPROPERTY |
IsFulltextIndexed |
列に対してフルテキスト インデックスを作成できるかどうかを示します。 | COLUMNPROPERTY |
IsFulltextKey |
インデックスがテーブルのフルテキスト キーであるかどうかを示します。 | INDEXPROPERTY |
TableFulltextBackgroundUpdateIndexOn | テーブルがフルテキスト インデックスをバックグラウンドで更新できるかどうかを示します。 | OBJECTPROPERTYEX |
TableFulltextCatalogId |
テーブルのフルテキスト インデックス データが存在する、フルテキスト カタログ ID。 | OBJECTPROPERTYEX |
TableFulltextChangeTrackingOn |
テーブルでフルテキストの変更の追跡が有効になっているかどうかを示します。 | OBJECTPROPERTYEX |
TableFulltextDocsProcessed |
フルテキスト インデックス作成の開始以降に処理された行の数。 | OBJECTPROPERTYEX |
TableFulltextFailCount | フルテキスト検索によるインデックスが設定されなかった行数。 | OBJECTPROPERTYEX |
TableFulltextItemCount | フルテキスト インデックスが正常に設定された行数。 | OBJECTPROPERTYEX |
TableFulltextKeyColumn |
一意なフルテキスト キー列の列 ID。 | OBJECTPROPERTYEX |
TableFullTextMergeStatus |
現在マージ中のフルテキスト インデックスがテーブルにあるかどうかを示します。 | OBJECTPROPERTYEX |
TableFulltextPendingChanges | 変更の追跡が処理されていないエントリ数。 | OBJECTPROPERTYEX |
TableFulltextPopulateStatus |
フルテキスト テーブルの作成状態。 | OBJECTPROPERTYEX |
TableHasActiveFulltextIndex |
テーブルが有効なフルテキスト インデックスを持っているかどうかを示します。 | OBJECTPROPERTYEX |
フルテキスト キー列に関する情報の取得
通常、行セット値関数 CONTAINSTABLE または FREETEXTTABLE の結果をベース テーブルと結合します。 その場合、一意なキー列の名前を把握している必要があります。 一意のインデックスがフルテキスト キーとして使用されているかどうかを調査したり、フルテキスト キー列の識別子を取得したりできます。
一意のインデックスがフルテキスト キー列として使用されているかどうかを調査するには
SELECT ステートメントを使用して、 INDEXPROPERTY 関数を呼び出します。 関数呼び出しでは、OBJECT_ID関数を使用してテーブルの名前 (table_name) をテーブル ID に変換し、テーブルの一意のインデックスの名前を指定し、次のように index プロパティを
IsFulltextKey
指定します。SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );
このステートメントでは、このインデックスを使用してフルテキスト キー列の一意性を確保している場合には 1 が返され、そうでない場合には 0 が返されます。
例
次の例では、フルテキスト キー列の一意性を確保するために PK_Document_DocumentID
インデックスが使用されているかどうかを確認します。
USE AdventureWorks
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
PK_Document_DocumentID
インデックスを使用してフルテキスト キー列の一意性が確保されている場合には 1 が返されます。 それ以外のときは 0 または NULL が返されます。 NULL は、無効なインデックス名が使用されている、インデックス名がテーブルに対応していない、テーブルが存在しないなどを意味します。
フルテキスト キー列の識別子を検索するには
フルテキスト処理に対応する各テーブルには、テーブルの行を一意にするための列があります ("一意なキー列")。 OBJECTPROPERTYEX 関数で取得できる
TableFulltextKeyColumn
プロパティには、この一意なキー列の列 ID が格納されます。この識別子を取得するには、SELECT ステートメントで OBJECTPROPERTYEX 関数を呼び出します。 OBJECT_ID関数を使用して、テーブルの名前 (table_name) をテーブル ID に変換し、次のように プロパティを
TableFulltextKeyColumn
指定します。SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
使用例
次の例では、フルテキスト キー列の識別子または NULL が返されます。 NULL は、無効なインデックス名が使用されている、インデックス名がテーブルに対応していない、テーブルが存在しないなどを意味します。
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
次の例は、一意のキー列の識別子からその列の名前を取得する方法を示しています。
USE AdventureWorks;
GO
DECLARE @key_column sysname
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn')
)
SELECT @key_column AS 'Unique Key Column';
GO
この例では、 Unique Key Column
という名前の結果セット列が返され、Document テーブルの一意のキー列の名前 DocumentID を含む単一行が表示されます。 このクエリに無効なインデックス名が使用されている、インデックス名がテーブルに対応していない、テーブルが存在しないなどの場合には、NULL が返されます。
テーブルのフルテキスト インデックスの無効化と再有効化
SQL Serverでは、既定によりユーザーが作成したすべてのデータベースでフルテキストが有効になります。 さらに、個々のテーブルに対してフルテキスト インデックスを作成し、これに列を追加すると、その時点で、このテーブルでは自動的にフルテキスト インデックスが有効になります。 フルテキスト インデックスから最後の列を削除すると、このテーブルでは自動的にフルテキスト インデックスが無効になります。
フルテキスト インデックスのあるテーブルでは、 SQL Server Management Studioを使用して手動でフルテキスト インデックスを無効にしたり、再度有効にしたりすることができます。
テーブルでフルテキスト インデックスを有効にするには
サーバー グループを展開し、 [データベース] を展開して、フルテキスト インデックスを有効にするテーブルを含むデータベースを展開します。
[テーブル] を展開し、フルテキスト インデックスを無効または再度有効にするテーブルを右クリックします。
[フルテキスト インデックス] を選択し、 [フルテキスト インデックスを無効化] または [フルテキスト インデックスを有効化] をクリックします。
テーブルのフルテキスト インデックスの削除
テーブルからフルテキスト インデックスを削除するには
オブジェクト エクスプローラーで、削除するフルテキスト インデックスが含まれているテーブルを右クリックします。
[フルテキスト インデックスの削除] を選択します。
フルテキスト インデックスの削除を確認するメッセージが表示されたら、 [OK] をクリックします。