自分のホームページに全文検索の機能をつけたいな、なんて考えていた人に朗報!ようやくわが SMART
クラブでも全文検索をサポートすることになったんだ。
全文検索といえば Namazu が有名。とくれば、ボクたちも迷わず Namazu
を採用!スミからスミまでしゃぶりつくすつもりだよ。
Namazuについて
Namazu
はいわずと知れた全文検索システムだ。ローカル内のドキュメントを検索するもよし、HTMLを検索するもよし、キミのアイデアしだいで無限に活用可能なんだ、えーと、たぶん。
さて、全文検索についてちょっと勉強しようか。たとえば、1万ファイルほどある文書があって、そのなかから「エロエロ」という単語を検索したいとしようか。1ファイルにどれだけの検索時間が必要なのかはシステムによるだろうけど、ものすごい時間待たされることだけは必至だ。たかだかスケベな要求を満たすために、異常な時間をただ呆然とデスクの前でただずむなんて、なんというか、他人には見られたくない姿だよね。そこで、あらかじめどの単語がどの文書で使われているかを記録したインデックスファイルを用意しておく、という手法が考え出されたんだ。Namazu
はこの手法を取り入れているからとっても高速だ。
ところで、Namazu はインデックスの作成を行う mknmz コマンドと、検索を行う namazu コマンドで構成されている。今の段階は、2つのコマンドがあるんだな、程度におぼえてくれていればオッケー。
- mknmz
- これで
検索用のインデックスを作るんだ。だから、Namazuをインストールした後、最初に試すコマンドはこれだ。まずこれを実行してインデックスを作ったら、その後に
Namazu を起動して検索することになるよ。
そうそう、頻繁に更新される文書を検索対称にするなら、cron などで定期的に実行させといいね。
余談だけど、現在の実装は Perl で書かれてる。 - namazu
- 文書から単語を検索するためのコマンド。
CGI として実行する時は、namazu のかわりに「namazu.cgi」を使うことになる。
こちらは C で実装されているよ。
必要なファイルのダウンロード
Namazu のインストールには、以下のものが必要。最低限必要なものは太字のものだよ。
- namazu
- File-MMagic (上記に同梱)
- kakasi もしくは ChaSen
- Perl インタプリタ(たぶん、最初からインストールされてる)
- nkf
- NKF
- Text-Kakasi
- Text-ChaSen
まず、太字のソフトウエアがインストール済みかどうかをチェックしよう。いつもの which コマンドを使うといい。
% which namazu
% which kakasi
% which perl
Namazuのインストールに必要なファイル一覧
| 名称 | 説明 | ファイル名 | 入手先 |
|---|---|---|---|
| Perl | Perl インタプリタ | perl-5.6.1.tar.gz | CPAN |
| nkf | 漢字コード変換 | nkf171.shar | 琉球大学 |
| NKF | nkf Perl モジュール | ||
| KAKASI | 日本語・ ローマ字変換 | kakasi-2.3.3.tar.gz | namazu.org |
| Text::Kakasi | KAKASI Perl モジュール | Text-Kakasi-1.05.tar.gz | Text::Kakasi |
| Chasen(茶筌) | 日本語 形態素 解析器 | chasen-2.2.8.tar.gz | 配布方針 |
| Text::ChaSen | ChaSen Perl モジュール | Text-ChaSen-1.03.tar.gz | Text::ChaSen |
| File::MMagic | File 種別 | File-MMagic-1.12.tar.gz | CPAN dist |
NKF、Text::Kakasi、Text::ChaSen は Perl モジュール化で、2.0 の高速化機能を生かすために必要で、なくても動くよ。
日本語の分かち書き KAKASI と ChaSen
日本語の分かち書きを扱うために、KAKASI または ChaSen が必要。どちらかを選ぶかはお好みとなっているんだけど、とくにこだわりがなければ KAKASI をおすすめするよ。念のため、KAKASI と ChaSen の違いは以下のとおり。
- ChaSen のほうがきめ細かい日本語処理が可能
- KAKASI のほうが3,4倍程度高速
- Namazu はデフォルトでKAKASI を使用
| 両方用意 | (無指定ではわかち書きに KAKASI を使うが、茶筌も -c オプションをするだけで使用できる) |
| 片方用意 | ./configure の時点でどちらを使うかが選ばれます。 |
インストール準備
インストールする際のユーザのプロファイルをチェックしよう。たとえば、Namazu をシフトJISで使うような場合は、LANG設定を js_JP.SJIS とかにしておいたほうがいい。さて、ユーザディレクトリに移動して、vi で編集だ。
% cd
% vi .bash_profile
次の文章を探し、なければ追加、あれば上書きしよう。
export LANG ja_JP.SJIS
telnet から printenv を実行し、環境変数の一覧表を表示させてみよう。もし、一覧表の中に「LANG」がなければ、環境変数 LANG が設定されていということだ。これがないとインデックスを作る時に日本語として扱ってもらえないんだ。というわけで、そんなときは環境変数をセットしよう。
環境変数の設定。ja,
ja_JP.eucJP, ja_JP.EUC, ja_JP.ujisなどがある。
わからないときは ja
にしておくといい
% LANG=ja
LANGに指定した値を有効にする
% export LANG
設定したLANG変数が表示される
% set | grep LANG
KAKASIのインストール
KAKASIのインストール
解凍時に作成された KAKASI のディレクトリに移動 % cd kakasi-2.3.4
そしてインストール % ./configure
% make
% make install
KAKASI のインストールが成功したかどうかは、以下のとおり。
% kakasi -h
KAKASI - Kanji Kana Simple Inverter Version 2.3.4
....
-w: wakatigaki mode
Report bugs to <bug-kakasi@namazu.org>.
出力結果の最後の方をよく見て、-w の行があるかチェックしよう。
Namazuのインストール
Namazuの解凍
tar で Namazu を解凍 % tar zxf namazu-2.0.7.tar.gz
File-MMagicのインストール
File-MMagic は unix 操作の file と同じような機能を perl 部品で実現するものなんだ。新たな種類の判別が出来るようにわりと更新が頻繁だs。
そしてインストール % perl Makefile.PL
% make
% make install
Namazuのインストール
Namazuのソースファイルのディレクトリに移動
% cd ..
そしてインストール
% ./configure
% make
% make check
% make install
インストール後のクリーンアップ
Namazuのインストール中に生成された余分なファイルを削除しておくと、身も心もすっきり。次の2つのコマンドのどっちかを使うといいよ。
- make clean
- 生成されたプログラムのバイナリファイルやオブジェクトファイルを、ソースコードの置かれたディレクトリから消す時に使う。とりあえずこちらを実行するといいんじゃなかな。
- make distclean
- 上のファイルの他に、一緒に configure'が生成したファイルも消す時に使います。これをしないと別の種類のコンピュータからはパッケージをコンパイルできない。