体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

ついにベールを脱いだ! 未来検索ブラジルの新検索エンジン『groonga』

全文検索エンジンSennaと言えば、未来検索ブラジルの生み出した傑作フリーソフトウェアとしてつとに有名であるが、いよいよその後継プロジェクトであるgroonga(ぐるんが)が、2月20日にテストリリースされた。新しい検索エンジンgroongaはいったいどのようなソフトウェアなのだろうか?正式リリースより一足早く、その特徴をレポートしてみた。

groongaは組み込み型の全文検索エンジンライブラリです。DBMSやスクリプト言語処理系等に組み込むことによって、その全文検索機能を強化することができます。また、リレーショナルモデルに基づくデータストア機能を内包しており、groonga単体でも高速なデータストアサーバとして使用することができます。以下のような特徴を持っています。

■全文検索方式
転置索引型の全文検索エンジンです。転置索引は圧縮されてファイルに格納され、検索時のディスク読み出し量を小さく、かつ局所的に抑えるように設計されています。用途に応じて以下の索引タイプを選択できます。

・転置文書索引
語が出現する文書番号のリストを索引に格納します。索引サイズが小さく、索引の更新が非常に高速です。ただし、フレーズ検索時にフォルスドロップが発生する可能性があります。タグ検索など、フレーズ検索が不要な用途に特に適しています。

・完全転置索引
語が出現する文書番号、および文書内での出現位置の完全なリストを格納します。高精度な検索が実現できます。

・段落情報つき転置索引
語が出現する文書とその文書内での段落番号も索引に格納します。段落単位での高精度な検索が実現できます。

・重み情報つき転置索引
語が出現する文書とその文書内での重要度(フォントサイズなど)の情報も索引に格納します。XML/HTMLなどのタグつき文書を対象とする高精度な検索が実現できます。

・トークナイズ方式
トークナイズ(検索対象の文書を語に分解する)処理の方式は、用途に応じて選択することができます。ビルトインのトークナイザとしては、形態素解析(mecab),n-gram(unigram,bigram,trigram),空白区切りが用意されています。またユーザが作成した共有ライブラリ形式のトークナイザモジュールを実行時に組み込んで使うことができます。

■組み込み型
DBMSやスクリプト言語処理系等への組み込みやすさを重視しています。groongaはそれ自身もデータストア機能を備えていますが、必要な部品のみを選択して利用することができます。したがって、あらかじめデータストア機能を備えているDBMSに組み込む場合は転置索引機能のみを利用し、言語処理系に組み込む場合には必要に応じてデータストア機能も含めて利用する、といった柔軟な構成を選択することができます。

転置索引を含めたデータストアのオブジェクトは、複数のスレッドおよび複数のプロセスで共有することができます。また、検索処理は他の処理との排他制御を挟むことなく実行できます。したがって様々なスレッドモデル・プロセスモデルのシステムに、その同時実行性能を妨げることなく組み込むことができます。

■即時更新
転置索引を含めたデータストアオブジェクトは、検索処理と同時に更新(追加/削除)処理を実行することができます。更新した内容は、即座に検索結果に反映されます。頻繁に内容が更新される文書に対して、常に最新の検索結果を返したい用途に適しています。

■高速大容量
groongaは検索処理と更新処理のどちらも高速に実行できるように、また、大量の検索要求が集中するサーバ用途で性能を発揮できるように設計されています。具体的には、一つのオブジェクトに対して、(それが更新処理と同時であっても)複数のスレッドまたはプロセスが同時に参照可能としています。ただし、一つのオブジェクトに対する更新処理は同時に一つまでしか実行できません。

また、二次記憶への読み書きをバッファリングすることで、実メモリサイズを超える大容量の文書でも急激に性能を低下させずに処理可能となっています。

データストア機能
groongaはリレーショナルモデルに基づくデータストア機能をもっています。データストアは、レコードの集まりであるテーブル、テーブルの集まりであるデータベースから構成されます。テーブルには任意数のカラムを定義することができます。全文検索に用いる転置索引もテーブルとカラムの組み合わせによって実現されます。適宜必要なカラムを追加することによって、本文以外の書誌情報による絞り込みや分類・ソートなどの機能を自由に表現することができます。

1 2次のページ
森大二郎の記事一覧をみる

記者:

プログラマ。有限会社未来検索ブラジル所属。オープンソースソフトウエアの開発に従事。参加作品「全文検索エンジンSenna  http://qwik.jp/senna/」「全文検索エンジンgroonga  http://groonga.org/」

ウェブサイト: http://groonga.org/

  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。