Share via


CREATE FULLTEXT INDEX (Transact-SQL)

更新 : 2006 年 12 月 12 日

データベース内のテーブルまたはインデックス付きビューの 1 つまたは複数の列で、フルテキスト インデックスを作成します。1 つのテーブルまたはインデックス付きビューに対して作成できるフルテキスト インデックスは、1 つだけです。データベース作成時の既定の設定では、データベースに対してフルテキスト検索を行えるようになっています。

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

構文

CREATE FULLTEXT INDEX ON table_name
     [(column_name [TYPE COLUMN type_column_name] 
          [LANGUAGE language_term] [,...n])]
     KEY INDEX index_name
          [ON fulltext_catalog_name]
     [WITH 
          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}
     ]

引数

  • table_name
    フルテキスト インデックスに含まれている列を格納するテーブルまたはインデックス付きビューの名前を指定します。
  • column_name
    フルテキスト インデックスに含める列の名前を指定します。フルテキスト検索用にインデックスを作成できるのは、データ型が charvarcharncharnvarchartextntextimagexmlvarbinary の列のみです。
  • TYPE COLUMN type_column_name
    column_name のドキュメント型が含まれている、table_name 内の列の名前を指定します。

    type_column_name のデータ型は、charncharvarchar、または nvarchar であることが必要です。column_name で指定した列のデータ型が varbinary(max) または image の場合のみ、type_column_name を指定します。それ以外の場合に指定すると、SQL Server はエラーを返します。

    詳細については、「フルテキスト検索フィルタ」を参照してください。

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

    language_term は省略可能で、言語のロケール識別子 (LCID) に対応する文字列、整数、または 16 進数の値を指定できます。language_term を指定した場合、その言語は、charncharvarcharnvarchartext、および ntext 型の列に格納されているデータのインデックス作成で使用されます。クエリ実行時に、列に対するフルテキスト述語の一部として language_term を指定しない場合は、ここで指定した言語がクエリでの既定の言語になります。値を指定しなかった場合は、SQL Server インスタンスの既定の言語が使用されます。

    言語が不明な場合、または column_name に格納されている言語が複数あり、列のデータ型が BLOB または XML 以外の場合は、ニュートラル (0x0) 言語を使用します。詳細については、「フルテキスト検索の言語選択時の注意」を参照してください。

    Microsoft SQL Server インスタンスの既定のフルテキスト言語に関する情報を取得するには、sp_configure ストアド プロシージャを使用します。詳細については、「sp_configure (Transact-SQL)」および「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
    フルテキスト インデックス作成に複数の列を指定できることを示します。複数の列を指定する場合は、各列をコンマで区切ります。
  • KEY INDEX index_name
    table_name の一意なキー インデックスの名前を指定します。KEY INDEX は、一意で、単一のキーを含む、NULL 値を許容しない列であることが必要です。フルテキストの一意キーには、一番小さな一意キー インデックスを選択します。最適なパフォーマンスを得るには、CLUSTERED インデックスの使用をお勧めします。
  • ON fulltext_catalog_name
    フルテキスト インデックスに使用するフルテキスト カタログを指定します。このカタログはデータベース内に存在する必要があります。この句は省略可能です。指定しない場合は、既定のカタログが使用されます。既定のカタログが存在しない場合、SQL Server ではエラーが返されます。

    fulltext_catalog_name にファイル グループを指定するか、カタログを指定しない場合、既定のフルテキスト カタログは、READONLY または OFFLINE にすることはできません。既定のフルテキスト カタログが READONLY または OFFLINE の場合、SQL Server ではエラーが返されます。

  • WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ **,**NO POPULATION]}
    インデックスの対象となるデータに対して行われたすべての変更の一覧を、SQL Server で保持するかどうかを指定します。WRITETEXT および UPDATETEXT によるデータの変更は、変更の追跡の対象にはなりません。

    • MANUAL
      変更の追跡ログの反映を、SQL Server エージェントのスケジュールに従って行うか、またはユーザーが手動で行います。
    • AUTO
      フルテキスト インデックスに関連するテーブル内でデータが変更されたときに、SQL Server によってフルテキスト インデックスが自動的に更新されます。AUTO は既定値です。

         この場合、フルテキスト インデックスに対して変更は自動的に反映されますが、反映までに少し時間がかかることがあります。フルテキスト インデックス作成プロセスの監視と、フルテキスト インデックス作成に関する問題の診断に使用できるプロパティの詳細については、「Transact-SQL 関数を使用したフルテキスト プロパティの値の取得」を参照してください。

    • OFF [ **,**NO POPULATION]
      SQL Server で、インデックスの対象となるデータに対して行われた変更の一覧を保持しません。

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

権限

実行するには、フルテキスト カタログに対する REFERENCES 権限とビューのテーブルに対する ALTER 権限が与えられているか、sysadmin 固定サーバー ロール、db_owner 固定データベース ロール、または db_ddladmin 固定データベース ロールのメンバであることが必要です。

次の例では、HumanResources.JobCandidate テーブルのフルテキスト インデックスを作成しています。

USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO

参照

関連項目

ALTER FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
GRANT (Transact-SQL)

その他の技術情報

フルテキスト検索

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

新しい内容 :
  • インデックス付きビューにもフルテキスト インデックスを適用できることを明記しました。
  • TYPE COLUMN 句の詳細説明のため、「フィルタ」トピックへのリンクを追加しました。