Share via


フルテキスト インデックスの管理

このトピックの内容

  • フルテキスト インデックスのプロパティの表示と変更

  • インデックスが作成されたテーブルと列のプロパティの表示

  • フルテキスト キー列に関する情報の取得

  • テーブルのフルテキスト インデックスの無効化と再有効化

  • テーブルのフルテキスト インデックスの削除

フルテキスト インデックスのプロパティの表示と変更

Management Studio でフルテキスト インデックスのプロパティを表示または変更するには

  1. オブジェクト エクスプローラーで、サーバーを展開します。

  2. [データベース] を展開し、フルテキスト インデックスを含むデータベースを展開します。

  3. [テーブル] を展開します。

  4. フルテキスト インデックスが定義されているテーブルを右クリックし、[フルテキスト インデックス] コンテキスト メニューの [フルテキスト インデックス] をクリックして、[プロパティ] をクリックします。 [フルテキスト インデックスのプロパティ] ダイアログ ボックスが表示されます。

  5. [ページの選択] ペインでは、次のいずれかのページを選択できます。

    ページ

    説明

    [全般]

    フルテキスト インデックスの基本的なプロパティが表示されます。 これには、いくつかの変更可能なプロパティと、データベース名、テーブル名、フルテキスト キー列の名前など多数の変更不可能なプロパティが含まれます。 変更可能なプロパティは次のとおりです。

    • [フルテキスト インデックス ストップリスト]

    • [フルテキスト インデックス有効]

    • [変更の追跡]

    • [検索プロパティ リスト]

    詳細については、「[フルテキスト インデックスのプロパティ] ([全般] ページ)」を参照してください。

    [列]

    フルテキスト インデックスを作成できるテーブル列が表示されます。 選択した列にフルテキスト インデックスが作成されます。 フルテキスト インデックスに含める列はいくつでも選択できます。 詳細については、「[フルテキスト インデックスのプロパティ] ([列] ページ)」を参照してください。

    [スケジュール]

    このページでは、フルテキスト インデックスを作成するためのテーブルの増分作成を開始する SQL Server エージェント ジョブのスケジュールを作成または管理できます。 詳細については、「フルテキスト インデックスの作成」を参照してください。

    重要な注意事項重要

    [フルテキスト インデックスのプロパティ] ダイアログ ボックスを閉じると、新規作成したスケジュールが SQL Server エージェント ジョブ (database_name.table_name でテーブルの増分作成を開始) に関連付けられます。

  6. [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 に変換します。その際、対象テーブルの一意のインデックスの名前と 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 関数を呼び出します。 次のようにテーブル名 (table_name) をテーブル ID に変換する OBJECT_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 を使用して手動でフルテキスト インデックスを無効にしたり、再度有効にしたりすることができます。

テーブルでフルテキスト インデックスを有効にするには

  1. サーバー グループを展開し、[データベース] を展開して、フルテキスト インデックスを有効にするテーブルを含むデータベースを展開します。

  2. [テーブル] を展開し、フルテキスト インデックスを無効または再度有効にするテーブルを右クリックします。

  3. [フルテキスト インデックス] を選択し、[フルテキスト インデックスを無効化] または [フルテキスト インデックスを有効化] をクリックします。

[先頭に戻る]

テーブルのフルテキスト インデックスの削除

テーブルからフルテキスト インデックスを削除するには

  1. オブジェクト エクスプローラーで、削除するフルテキスト インデックスが含まれているテーブルを右クリックします。

  2. [フルテキスト インデックスの削除] を選択します。

  3. フルテキスト インデックスの削除を確認するメッセージが表示されたら、[OK] をクリックします。

[先頭に戻る]