Share via


ALTER FULLTEXT INDEX (Transact-SQL)

更新 : 2006 年 12 月 12 日

フルテキスト インデックスのプロパティを変更します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | { STOP | PAUSE | RESUME } POPULATION 
   }

引数

  • table_name
    フルテキスト インデックスに含まれている列を格納するテーブルの名前を指定します。データベース名とテーブル所有者名の指定は省略可能です。
  • ENABLE | DISABLE
    table_name のフルテキスト インデックス データを収集するかどうかを Microsoft SQL Server に指示します。ENABLE はフルテキスト インデックスをアクティブにし、DISABLE はフルテキスト インデックスをオフにします。

    フルテキスト インデックスがオフになると、フルテキスト インデックス メタデータはシステム テーブル内に残ります。フルテキスト インデックスがオフのときに CHANGE_TRACKING がオンの状態の場合 (自動または手動更新)、インデックスの状態が停止し、処理中のクロールが停止し、テーブル データへの新しい変更はインデックスに対して追跡または反映されません。table_name でのフルテキスト インデックスは、ENABLE で再びアクティブにできます。

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    SQL Server が、フルテキスト カタログ内にある、インデックスの対象となるデータに対するすべての変更の一覧を保持するかどうかを指定します。WRITETEXT および UPDATETEXT によるデータの変更は、フルテキスト インデックスには反映されず、変更の監視でも取得されません。

    フルテキスト インデックスの CHANGE_TRACKING 状態を変更する場合、フルテキスト インデックスの作成されたテーブルが存在する FILEGROUP は OFFLINE または READONLY に設定できません。設定するとコマンドは失敗し、SQL Server はエラーを返します。

  • MANUAL
    変更の追跡ログの反映を、SQL Server エージェントのスケジュールに従って行うか、またはユーザーが手動で行います。
  • AUTO
    フルテキスト インデックスに関連するテーブル内でデータが変更されたときに、SQL Server によってフルテキスト インデックスが自動的に更新されます。AUTO は既定値です。
  • OFF
    SQL Server で、インデックスの対象となるデータに対して行われた変更の一覧を保持しません。
  • ADD | DROP column_name
    フルテキスト インデックスに対して追加または削除する列を指定します。列の型は、charvarcharncharnvarchartextntextimagexml、または varbinary(max) であることが必要です。

    DROP 句は、フルテキスト インデックスが既に有効になっている列でのみ使用します。

    TYPE COLUMN および LANGUAGE を ADD 句と一緒に使用して、column_name にこのプロパティを設定します。列を追加する場合、この列に対するフルテキスト クエリが機能するように、テーブル上のフルテキスト インデックスを再作成する必要があります。

    WITH NO POPULATION が指定されていなければ、列がフルテキスト インデックスに対して追加または削除された後、SQL Server で自動的に完全作成が開始されます。

  • TYPE COLUMN type_column_name
    column_name のドキュメント型が含まれている、table_name 内の列の名前を指定します。column_name の列が varbinary(max) または image の場合のみ、type_column_name を指定します。

    TYPE COLUMN のデータ型は、charncharvarchar または nvarchar です。フルテキストがサポートされているファイル形式と varbinary(max) 列に格納されているインデックス データの詳細については、「フルテキスト検索フィルタ」を参照してください。

  • LANGUAGE language_term
    column_name に格納されているデータの言語を指定します。

    language_term は省略可能で、言語のロケール識別子 (LCID) に対応する文字列、整数、または 16 進数の値を指定できます。language_term を指定した場合、その言語は検索条件のすべての要素に適用されます。値を指定しなかった場合は、SQL Server インスタンスの既定のフルテキスト言語が使用されます。

    SQL Server インスタンスの既定のフルテキスト言語に関する情報を取得するには、sp_configure ストアド プロシージャを使用します。詳細については、「default full-text language オプション」を参照してください。

    language_term を文字列で指定する場合は、syslanguages システム テーブルの alias 列の値と同じ値を指定します。文字列の場合は、'language_term' のように引用符 (') で囲む必要があります。language_term を整数で指定する場合は、その言語を表す実際の LCID を指定します。language_term を 16 進数値で指定する場合は、「0x」の後に LCID の 16 進数値を指定します。16 進数の値は、先頭の 0 を含め、8 桁以内で指定してください。

    値を 2 バイト文字セット (DBCS) の形式で指定すると、SQL Server で Unicode に変換されます。

    language_term で指定した言語に対しては、ワード ブレーカや語幹検索などのリソースが有効になっている必要があります。指定した言語でこれらのリソースがサポートされていない場合、SQL Server ではエラーが返されます。

    列のデータ型が BLOB および XML 以外で、複数の言語のテキスト データが含まれている場合や、列に格納されているテキストの言語が不明な場合は、ニュートラル (0x0) 言語リソースを使用します。データ型が XML または BLOB の列に格納されているドキュメントに対しては、そのドキュメントの言語のエンコードがインデックス作成時に使用されます。たとえば、データ型が XML の列では、XML ドキュメントの属性 xml:lang によって言語が決定されます。クエリ時には、フルテキスト クエリ内で language_term を指定しない限り、前回 language_term に指定された値がフルテキスト クエリの既定の言語になります。

  • [ ,...n]
    複数の列が ADD または DROP 句に指定できることを表します。複数の列を指定する場合は、これらの列をコンマで区切ります。
  • WITH NO POPULATION
    ADD または DROP 列操作後に、フルテキスト インデックスは作成されません。ユーザーが START...POPULATION コマンドを実行する場合のみ、フルテキスト インデックスが作成されます。

    CHANGE_TRACKING が有効で、WITH NO POPULATION が指定されている場合、SQL Server はエラーを返します。CHANGE_TRACKING が有効で、WITH NO POPULATION が指定されていない場合、SQL Server では作成後のインデックスで完全作成が実行されます。

    NO POPULATION オプションは、CHANGE_TRACKING が OFF の場合にだけ使用できます。NO POPULATION を指定した場合、SQL Server ではインデックスの作成後、インデックス対して値は設定されません。インデックス対して値が設定されるのは、ユーザーが ALTER FULLTEXT INDEX...START POPULATION コマンドを指定した場合のみです。NO POPULATION を指定しない場合、SQL Server では、インデックスの作成後にインデックスへの値が完全に設定されます。

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    SQL Server に対して、table_name のフルテキスト インデックスの作成を開始するように指示します。フルテキスト インデックス作成が既に進行中の場合、SQL Server は警告を返し、新しい作成は開始されません。
    • FULL
      行に対してインデックスが既に作成されていても、フルテキスト インデックス作成でテーブルのすべての行が取得されます。
    • INCREMENTAL
      最後の作成以降に変更された行のみがフルテキスト インデックス作成で取得されます。INCREMENTAL は、テーブルに timestamp 型の列がある場合のみ適用できます。フルテキスト カタログ内のテーブルに timestamp 型の列が含まれていない場合、テーブルには FULL 作成が適用されます。
    • UPDATE
      変更の監視インデックスが最後に更新されてから行われた、すべての挿入、更新、削除の処理を指定します。変更の監視の作成はテーブルで有効になっている必要がありますが、バックグラウンド更新インデックスまたは自動の変更の監視はオンにしないでください。
  • {STOP | PAUSE | RESUME } POPULATION
    進行中の作成を停止または一時停止します。あるいは、一時停止中の作成を停止または再開します。

    STOP POPULATION によって、自動の変更の監視またはバックグラウンド更新インデックスは停止しません。変更の監視を停止するには、SET CHANGE_TRACKING OFF を使用します。

    PAUSE POPULATION と RESUME POPULATION は完全作成に対してのみ使用できます。他の作成では停止した場所からクロールを再開するため、他の作成の種類の場合、これらのオプションは関与しません。

解説

xml データ型のデータのインスタンスが、フルテキスト検索用にインデックス作成される場合、属性や要素名はインデックス作成されず、クエリも実行できません。ただし要素の値に対しては、各インスタンスでインデックス作成やクエリを実行できます。複数言語を含む整形式の XML ドキュメントやフラグメントはサポートされます。

権限

実行するには、テーブルまたはビューに対する ALTER 権限を持っているか、sysadmin 固定サーバー ロール、db_ddladmin 固定データベース ロールまたは db_owner 固定データベース ロールのメンバであることが必要です。

次の例では、AdventureWorks データベースの JobCandidate テーブルのフルテキスト インデックスを修正します。

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

参照

関連項目

CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)

その他の技術情報

フルテキスト検索

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

追加内容 :
  • 構文に PAUSE | RESUME POPULATION オプションを追加。