フルテキスト検索の強化
それでは、ここからは SQL Server 2012 でフルテキスト検索が強化された点について紹介していきます。
まずは、ドキュメント/ファイルのプロパティ情報も検索条件として有効に使用できることになった点から始めましょう。
1.プロパティ検索
エクスプローラーを使ってWindows上に存在するファイルを右クリックすると、ファイルのプロパティを参照するためのメニューが表示されることは、広く知られていると思います。ファイルのプロパティには様々な情報が保存されています。たとえばファイルの種類やサイズ、あるいはアクセス権などのセキュリティ関連の情報などがあります。
そのような情報はファイル自体に保存している内容とは、別の観点からの検索するような場合にとても有効です(ファイルの作者をもとにファイルを検索する時など)。
また、SQLServerは、各種のファイルをvarbinary、varbinary(max)、filetable、filestreamといったデータ型に格納することができます。さらに、格納したデータにフルテキストインデックスを作成することもできます。
ここまでの内容は良いこと尽くめなのですが、実はSQL Server 2008 R2 まではややもどかしい実装になっていました。それは、ファイルのプロパティとファイルの中身の区別ができなかった点です。たとえば、プロパティに「作者: Mike Smith」という情報を持っていても、ファイルの中に「Mike Smith」という記述があった場合と区別することができませんでした。そのため、せっかくそれぞれのファイルが保持しているプロパティ情報の有効に利用できません。
その点を改善するためにSQL Server 2012 ではプロパティに保存してされている情報を、ファイル内に含まれる情報と切り離して取り扱うことができるようになりました。これによって、プロパティ内に含まれる情報をもとにフィルタをかけるような場合に、大幅な検索対象の絞り込み(ファイル全体ではなく、プロパティ部分のみ)が可能になり、フルテキストインデックスに対するクエリのパフォーマンスを大きく向上させることができます。
つづいては、2つの単語の関係性をより厳密に検索条件に指定できるようになった点の紹介です。