Namazu

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

 自分のホームページに全文検索の機能をつけたいな、なんて考えていた人に朗報!ようやくわが 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'が生成したファイルも消す時に使います。これをしないと別の種類のコンピュータからはパッケージをコンパイルできない。

関連記事