Namazu

Namazuをインストールして全文検索

2009年8月6日


 自分のホームページに全文検索の機能をつけたいな、なんて考えていた人に朗報!ようやくわが 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のインストール

tar で KAKASI を解凍 % tar zxf kakasi-2.3.4.tar.gz

解凍時に作成された 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。

解凍時に作成された File-MMagic のディレクトリに移動 % cd namazu-2.0.7/File-MMagic

そしてインストール % perl Makefile.PL
% make
% make install

Namazuのインストール

Namazuのソースファイルのディレクトリに移動 % cd ..

そしてインストール % ./configure
% make
% make check
% make install

インストール後のクリーンアップ

Namazuのインストール中に生成された余分なファイルを削除しておくと、身も心もすっきり。次の2つのコマンドのどっちかを使うといいよ。

make clean
生成されたプログラムのバイナリファイルやオブジェクトファイルを、ソースコードの置かれたディレクトリから消す時に使う。とりあえずこちらを実行するといいんじゃなかな。
make distclean
上のファイルの他に、一緒に configure'が生成したファイルも消す時に使います。これをしないと別の種類のコンピュータからはパッケージをコンパイルできない。

Comment

コメントを残す

メールアドレスが公開されることはありません。

リズムファクトリーはホームページの制作会社です。
ホームページ制作に関するご要望・ご相談はこちらからどうぞ。