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