1. ホーム
  2. sql

[解決済み] テーブルまたはインデックス付きビューのCONTAINSまたはFREETEXT述語は、フルテキストインデックス化されていないため、使用することができません。

2022-12-24 09:53:56

質問

SQL server 2008 R2 のデータベースで、以下のエラーが発生しました。

データベースで CONTAINS または FREETEXT テーブルまたはインデックス付きビュー 'tblArmy' の述語は、フルテキストインデックス化されていないため、'tblArmy' の述語となります。

どのように解決するのですか?

  1. 全文検索機能がインストールされているかどうか確認してください。

  1. 全文検索カタログの作成 (必要な場合)

    まず、すでにカタログが存在するかどうかを確認します。

      select *
      from sys.fulltext_catalogs
    
    

    カタログがない場合、カタログを作成する

      use [DatabaseName]
      create fulltext catalog FullTextCatalog as default
    
    

    を実行すると、上記と同じようにカタログが作成されたことが確認できます。

  2. 全文検索インデックスを作成します。

      create fulltext index on Production.ProductDescription(Description)
      key index PK_ProductDescription_ProductDescriptionID
    
    

    インデックスを作成する前に、確認すること。

    - 1つのテーブルには1つのフルテキスト検索インデックスしか許可されないため、そのテーブルにすでにフルテキスト検索インデックスがないこと。

    - 一意なインデックスがテーブルに存在する。このインデックスは、NULLを許容しない単一キーカラムに基づいていなければなりません。

    - フルテキストカタログが存在します。デフォルトのフルテキストカタログが存在しない場合は、フルテキストカタログ名を明示的に指定する必要があります。

ステップ 2 と 3 は、SQL Sever Management Studio で行うことができます。オブジェクト エクスプローラーで、テーブルを右クリックし、そのテーブルで Full-Text index メニュー項目を選択し、次に Define Full-Text Index... というサブメニュー項目があります。フルテキストインデックス作成ウィザードは、このプロセスを案内してくれます。また、まだ全文検索カタログをお持ちでない場合は、作成してくれます。

より詳しい情報は MSDN

ステップに従った後、全文検索インデックスが作成されるまで数分必要です(これはテーブルとカラムデータのサイズに依存します)。