今回から,全文検索システムの「Kabayaki」を紹介します。Kabayakiは,日本語文書用に作られた全文検索システムです。オープンソースの全文検索エンジン「Namazu」に対してWebブラウザで各種設定を可能にするなど,使いやすく改良したものです。

 全文検索は,文書の全情報が検索対象となります。ファイル名や見出し,文書中の特定の要素に限定しません。また,ファイル内の文字列検索が単一ファイルを対象にしているのに対し,全文検索は複数の文書が対象となります。操作は,検索キーワードを入力し「検索」ボタンを押すのみです。

写真1●Kabayakiの画面
写真1●Kabayakiの画面

 Kabayakiは誰でも簡単に使えることを目指して開発されています。“Namazuをおいしくする”という意味からKabayakiと名付けられました。Linux対応のKabayaki-1.0.0が2001年6月に公開され,2003年6月にはWindows版のKabayakiも発表されました。

写真2●Namazuの画面
写真2●Namazuの画面
[画像のクリックで拡大表示]

 ベースとなるNamazuは,1997年にversion1.0.0が公開され,2000年2月にversion2.0を公開。2006年に公開されたNamazu2.0.16からは年1回のバージョンアップとなり,2009年9月23日公開のNamazu2.0.20が最新版です。

 Namazuの検索処理には,事前作成の検索用インデックス(索引)を使用します。これにより,大量文書の高速検索を実現します。インデックス作成のプログラム(mknmz)はPerl言語で,検索のコマンド(namazu)やCGI(namazu.cgi)はC言語で作られています。

 Namazuのインデックスは,全文検索の対象となる文書群(ファイルの集合)に含まれる単語の位置情報を格納した索引構造です。書籍の索引にある単語とページ番号と同様,全文検索システムのインデックスには単語と位置情報のテーブルを含んでいます。検索処理にかかる時間はインデックスの大きさにあまり影響されず,極めて短時間で終了します。

 Namazuのフィルタの機能で,インデックス作成時にさまざまな形式の文書からテキストを抽出できます。Namazu側で用意している呼び出しの仕組みを使えば,他で開発したプログラムと組み合わせてテキストを抽出することも可能です。

 テキストを単語単位に分割(形態素解析)して索引の見出し語にするには,分かち書き機能を使用します。