TOP
>
業務システム
> 全文検索ソフトウェアの比較
高性能なオープンソース全文検索システム「Ludia」
第2回:データを徹底活用する全文検索機能の仕組みと製品比較
著者:
NTTデータ 加納 寿浩
2006/12/22
前のページ
1
2
3
全文検索ソフトウェアの比較
商用のDBMSに、高度な全文検索機能が装備されたことは、連載の第1回にも記載しました。DBMSに対する全文検索は、DBMS本体での実現のほか、サードパーティによる外部モジュールでの対応もありますが、これはSQL文とは異なる個別のインターフェースを用います。ここではLudiaと同様に、SQL文でデータベース内の全文検索を行えるDBMS標準の機能のいくつかを比較します。
表1:全文検索機能の比較
(画像をクリックすると別ウィンドウに拡大図を表示します)
注1:V-gram:
N-gramの拡張方式
動作環境
商用DBMSは、主要なUNIX環境全てとLinux環境、Windows環境で動作します。Ludia Ver.0.9はLinux上でのみ動作しますが、Ver.1.0に向けてWindows上でも動作可能とする予定です。
インデックス方式
Oracle Textは、V-gramというN-gramの改良方式と単語インデックスの両方をサポートしています。N-gramでは、n文字固定でトークンを切り出すため、「ん」や小さい「っ」「ゃ」からはじまる無意味なトークンを切り出します。V-gramは、n文字固定で分割するのではなく、上記のような無意味なトークンを切り出さないようにトークン長を可変長としていることが特徴です。単語インデックスでは、単語辞書にない文字列はV-gramでトークンが生成され、検索漏れを防いでいます。
Ludiaでは、単語インデックス/N-gramのいずれの全文検索インデックスもサポートしています。単語インデックスでは、形態素解析で分割されたトークンの部分一致でも検索することが可能です。これにより適合率と再現率のバランスをとった設定をすることが可能です。
Oracle TextとLudiaでは、単語インデックスとN-gram(V-gram)の両方が使用できるため、列ごとに適合率を重視する列、再現率を重視する列と使い分けることが可能です。
図7:Ludiaにおける全文検索インデックスの使い分け
類義語検索
シソーラスを用いた類義語検索は、商用DBMSのみの機能となります。Ludiaでは対応していません。
想定される類義語をOR条件で並べて検索をするなどの工夫が必要となります。
バイナリファイル対応
Oracle Textは、なんと100種類以上のバイナリファイルに対しても全文検索インデックスを設定し、高速に検索することが可能です。バイナリファイルの保管場所は、外部のファイルサーバでも、データベースのテーブルの中でも可能です。
Ludia Ver.0.9はPDFファイルに対する検索が可能です。さらに、Ver.1.0でMicrosoft Officeの主なファイルも対応する予定です。バイナリファイルの保管場所はOracle Text同様に、外部のファイルサーバでも、データベースのテーブルの中でも可能です。
インデックス更新
データベースに記録を挿入(または更新、削除)した結果が、全文検索インデックスに反映されるタイミングです。同期であれば、記録を挿入または更新した直後から、全文検索結果に反映されます。非同期の場合は、夜間などに差分データを一括して全文検索インデックスに反映します。
商用DBMSでは、同期、非同期のいずれにも対応していますが、非同期を推奨しているようです。これは、更新SQLの性能劣化を防ぐためではないかと思われます。なお、Ludiaは同期更新のみ対応しています。
次回は、Ludiaの導入手順と簡単な使用方法について解説します。
前のページ
1
2
3
著者プロフィール
株式会社NTTデータ 加納 寿浩
日本でも有数の大規模システム更改プロジェクトに企画段階からサービス開始まで従事。主にメインフレーム上のデータベース性能対策を行う。その後、該当システムのオープン化検証にて、オープン系DBMSの評価を行った。2005年から現職。Ludiaプロジェクトの立ち上げを行う。
INDEX
第2回:データを徹底活用する全文検索機能の仕組みと製品比較
今回の内容
単語インデックスとN-gram
全文検索ソフトウェアの比較