SQL Server 2008 におけるフルテキスト検索の重大な変更
このトピックでは、フルテキスト検索の重要な変更について説明します。これらの変更によって、以前のバージョンの SQL Server に基づくアプリケーション、スクリプト、または機能が使用できなくなる場合があります。この問題は、アップグレードするときに発生することがあります。詳細については、「アップグレード アドバイザを使用したアップグレードの準備」を参照してください。
重大な変更
SQL Server 2008 では、フルテキスト検索に次の重大な変更が適用されています。
機能 |
シナリオ |
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 から非実体レコードが返されません。 |
FREETEXT または FREETEXTTABLE |
完全に一致する句の検索。 |
検索文字列 (freetext_string) を二重引用符で囲むと、ステミングと類義語辞典の照合は行われず、句検索と同じように、完全一致のみが返されます。たとえば、FREETEXT 述語で "fast ships" と指定した場合、"fast ships" を含む行のみが返されます。"ship your package fast" という語句は返されません。 |
検索文字列を単一引用符または二重引用符で囲んでいるかどうかに関係なく、ステミングと類義語辞典の照合を行う FREETEXT および FREETEXTTABLE では、句検索を使用できなくなりました。たとえば、"fast ships" で検索すると、"fast ships" と "ship your package fast" の両方が返されます。 句で検索するには、CONTAINS または 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 を指定する必要があります。 |
類義語辞典のステミング処理 |
類義語辞典と変化形 (ステミング) を使用する。 |
類義語辞典は、その展開後に自動的にステミングされます。 |
展開でステミング形式が必要な場合は、ステミング形式を明示的に追加する必要があります。 |
フルテキスト カタログのパスとファイル グループ |
フルテキスト カタログを使用する。 |
フルテキスト カタログは、それぞれに物理パスを持ち、ファイル グループに属します。これらは、データベース ファイルとして扱われます。 |
フルテキスト カタログは仮想オブジェクトであり、ファイル グループには属しません。フルテキスト カタログは、フルテキスト インデックスのグループを指す論理的概念です。
注意
フルテキスト カタログを指定する SQL Server 2005 の Transact-SQL DDL ステートメントは、正しく動作します。
|
このカタログ ビューの path、data_space_id、および file_id を使用する。 |
これらの列から特定の値が返されます。 |
これらの列から NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|
この非推奨システム テーブルの path 列を使用する。 |
フルテキスト カタログのファイル システム パスが返されます。 |
NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|
これらの非推奨ストアド プロシージャの PATH 列を使用する。 |
フルテキスト カタログのファイル システム パスが返されます。 |
NULL が返されます。これは、フルテキスト カタログがファイル システムに配置されなくなったためです。 |
|
このストアド プロシージャの sp_help_fulltext_catalog_components を使用する。 |
現在のデータベースにあるすべてのフルテキスト カタログに使用されている、すべてのコンポーネント (フィルタ、ワード ブレーカ、プロトコル ハンドラ) の一覧を返します。 |
空の行が返されます。 |
|
IsFullTextEnabled プロパティを使用する。 |
IsFullTextEnabled 設定で、指定のデータベースでフルテキスト検索が有効かどうかが示されます。 |
この列の値は無効です。ユーザー データベースでは、常にフルテキスト検索が有効になっています。 |
変更履歴
変更内容 |
---|
FREETEXT 機能に関する行を表に追加しました。 |