このトピックでは、フルテキスト検索の重要な変更について説明します。 これらの変更によって、以前のバージョンの SQL Server に基づくアプリケーション、スクリプト、または機能を使用できなくなる場合があります。 この問題は、アップグレードするときに発生することがあります。 詳細については、「アップグレード アドバイザーを使用したアップグレードの準備」を参照してください。
SQL Server 2012 におけるフルテキスト検索の重大な変更
sys.fulltext_languages の名前列で変更された照合順序
カタログ ビュー sys.fulltext_languages (Transact-SQL) の言語名の列の照合順序は、リソース データベースの固定の照合順序から、SQL Server のインスタンスに対して選択した既定の照合順序に変更されました。 この変更によって、sys.fulltext_languages を使用した sys.syslanguages (Transact-SQL) ビューを追加するときに、名前列の値を比較することができます。 たとえば、既定のフルテキスト言語が既定のデータベース言語とは異なっているすべてのデータベースをクエリできます。
SQL Server 2008 におけるフルテキスト検索の重大な変更
SQL Server 2005 と SQL Server 2008 以降のバージョン間のフルテキスト検索に、次の重大な変更が適用されています。
機能 |
シナリオ |
SQL Server 2005 |
SQL Server 2008 以降のバージョン |
||
|---|---|---|---|---|---|
ユーザー定義型 (UDT) を使用した CONTAINSTABLE |
フルテキスト キーが SQL Server ユーザー定義型である (たとえば、MyType = char(1))。 |
ユーザー定義型に割り当てられた型のキーが返されます。 この例では char(1) です。 |
ユーザー定義型のキーが返されます。 この例では MyType です。 |
||
top_n_by_rank パラメーター (CONTAINSTABLE および FREETEXTTABLE Transact-SQL ステートメント) |
パラメーターに 0 を指定した top_n_by_rank クエリ。 |
ゼロより大きな値を使用するよう通知するエラー メッセージが表示されて処理が失敗します。 |
処理が成功し、ゼロ行を返します。 |
||
CONTAINSTABLE と ItemCount |
MSSearch に変更を適用する前に、ベース テーブルから行を削除する。 |
CONTAINSTABLE からゴースト レコードが返されます。 ItemCount は変更されません。 |
CONTAINSTABLE からゴースト レコードが返されません。 |
||
ItemCount |
テーブルに null のドキュメントまたは null 型の列が含まれている。 |
インデックス付きドキュメントに加えて、null のドキュメントまたは null 型を含んだドキュメントが ItemCount 値にカウントされます。 |
ItemCount 値にはインデックス付きドキュメントのみがカウントされます。 |
||
カタログの ItemCount |
NULL 拡張機能を持つ BLOB 列。 |
カタログの ItemCount にカウントされます。 |
カタログの ItemCount にカウントされません。 |
||
UniqueKeyCount |
カタログで一意のキー数を照会する (たとえば、それぞれに word1、word2、word3 の 3 つの単語を含んだ 2 つのテーブル (table1 と table2) など)。 |
UniqueKeyCount = 9. この値は次のようにして得られます。 table1 = 3 table1 のフルテキスト インデックスの EOF = 1 table2 = 3 table2 のフルテキスト インデックスの EOF = 1 フルテキスト カタログ = 1 |
各テーブルでの UniqueKeyCount は、個別のキーワード数 + 1 (0xFF) です。 この場合、複数のドキュメント内の同じ単語は、新たな一意のキーとして扱われません。 カタログでの UniqueKeyCount は、カタログ内の各テーブルの UniqueKeyCount の合計です。 別々のテーブルにある同一の単語は、一意のキーとして扱われます。 この場合の一意のキー数は 8 です。 |
||
precompute rank サーバー レベル オプション |
FREETEXTTABLE クエリのパフォーマンス最適化。 |
このオプションが 1 に設定されていると、top_n_by_rank が指定されている FREETEXTTABLE クエリは、フルテキスト カタログに格納されている、事前に計算済みのデータの順位付けを使用します。 |
サポートされません。 |
||
キー列を更新するときの sp_fulltext_pendingchanges |
2 行のテーブルの 1 行でフルテキスト キー列を更新し、sp_fulltext_pendingchanges を実行する。 |
両方の行が表示されます。 |
1 行だけが表示されます。 |
||
インライン関数 |
フルテキスト演算子が指定されたインライン関数。 |
エラー メッセージが返されます。 |
関連する行が返されます。 |
||
sp_fulltext_database を使用してフルテキスト検索を有効または無効にする。 |
フルテキスト クエリには結果が返されません。 データベースでフルテキストが無効になっている場合は、フルテキスト操作を実行できません。 |
データベースでフルテキストが無効になっていても、フルテキスト クエリに結果が返され、フルテキスト操作も実行できます。 |
|||
ロケール固有のストップ ワード |
親言語のロケール固有の変化形 (ベルギーのフランス語やカナダのフランス語など) でのクエリ。 |
ロケール固有の変化形でのクエリは、その親言語のコンポーネント (ワード ブレーカー、ステミング機能、ストップ ワード) で処理されます。 たとえば、フランス語 (ベルギー) の解析にはフランス語 (フランス) のコンポーネントが使用されます。 |
ロケール識別子 (LCID) ごとにストップ ワードを明示的に追加する必要があります。 たとえば、ベルギー、カナダ、フランスの LCID を指定する必要があります。 |
||
類義語辞典のステミング処理 |
類義語辞典と変化形 (ステミング) を使用する。 |
類義語辞典は、その展開後に自動的にステミングされます。 |
展開でステミング形式が必要な場合は、ステミング形式を明示的に追加する必要があります。 |
||
フルテキスト カタログのパスとファイル グループ |
フルテキスト カタログを使用する。 |
フルテキスト カタログは、それぞれに物理パスを持ち、ファイル グループに属します。 これらは、データベース ファイルとして扱われます。 |
フルテキスト カタログは仮想オブジェクトであり、ファイル グループには属しません。 フルテキスト カタログは、フルテキスト インデックスのグループを指す論理的概念です。
|
||
このカタログ ビューの path、data_space_id、および file_id を使用する。 |
これらの列から特定の値が返されます。 |
これらの列から NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|||
この非推奨システム テーブルの path 列を使用する。 |
フルテキスト カタログのファイル システム パスが返されます。 |
NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|||
これらの非推奨ストアド プロシージャの PATH 列を使用する。 |
フルテキスト カタログのファイル システム パスが返されます。 |
NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|||
このストアド プロシージャの sp_help_fulltext_catalog_components を使用する。 |
現在のデータベースにあるすべてのフルテキスト カタログに使用されている、すべてのコンポーネント (フィルター、ワード ブレーカー、プロトコル ハンドラー) の一覧を返します。 |
空の行が返されます。 |
|||
IsFullTextEnabled プロパティを使用する。 |
IsFullTextEnabled 設定で、指定のデータベースでフルテキスト検索が有効かどうかが示されます。 |
この列の値は無効です。 ユーザー データベースでは、常にフルテキスト検索が有効になっています。 |
注