TOPへ
起票 2005.2.27/更新 2005.2.27
 目次へ  
   


全文検索システムのnamazu

 

 



全文検索システムnamazuの導入

会社でキーワード検索システムが必要になりました。さて、検索エンジンって自前で立てられるのかな?
と、あれこれ検索すると 行き着くところはnamazuです。
namazuっていままであまり真面目に調べたことはなかったけれど、有名ですね。
全文検索システムとは?と聞かれれば namazu!と答える、そんな名前です。

namazuの公式サイトはこちら http://www.namazu.org
詳細はオリジナルサイトをご覧ください。
今回は名前だけでなく、本格的にこのnamazuの機能に向き合ってみます。
では早速自サイトでテストです。

【必要なモノ】

Perl これはもうあたりまえにありますね  
nkf 日本語変換ソフトです たいていLinuxと一緒にインストールされますが、v1.90と1.92は不具合があるのでそれ以外のものを使う必要があるとのこと。私のサーバーは1.90でした。
NKF.mod ついでに Perlモジュールの NKF.modも高速らしいのでインストールします
kakashi 日本語文節分析用 ChaSen(ちゃせん)とどちらかを使うという事ですが簡単そうなのでkakashiを使うことにしました
namazu これが検索システムそのものです  

全部namazuサイトで丁寧に紹介されています。

 
【インストールした手順の覚え書き】
nkf
前述の通り v1.90 と 1.92 の不具合を避ける為に入れます。
IEでダウンロードした圧縮された該当ファイルはどういう訳かうまくgzipで展開できませんでした。
しかたないのでLinux上から直接ファイルをゲットしました。コマンドは次の通り。
 wget http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/nkf204.tar.gz
バージョンは2.04です。
ちなみに一連の展開処理は私の場合 /tmp の下でやってます。/tmpは定期的に勝手に掃除されてしまいますので注意して下さい。
上記ファイルのある場所は namazuサイトのチュートリアルで紹介されています。
ではインストール作業を説明します。

 tar zxvf nkf204.tar.gz で解凍
 cd nkf204
  make

これでnkfは完了、となるハズですがなんだかちょっと説明通りに行かなかったのでもう一度おさらいします。
あらかじめもとから入っているnkfは削除しておかなければいけません。
rpm -qa | grep nkf
でnkfのパッケージを調べてそのファイル名を使って削除します
rpm -e nkfxxxxx
という様に削除しておきます。xxxxxは該当ファイルに書き換えます。
そしてnkfをインストール、というところですが、なんだか手動でコピーしないとダメみたいです。

 cp nkf /usr/bin
 cp nkf.1 /usr/local/man/man1
    

本来 /usr/local/bin に入れるのでしょうが、システムがしきりに /usr/bin/nkf を見に行きたがるのですなおに従う事にしました。
まずはこれでOKです。

そして Perlモジュールも一緒にインストールします。

  cd NKF.mod/
  perl Makefile.PL
  make
  make test
  make install
で完了です。

kakashi
これもhttp://www.namazu.org/doc/tutorial.htmlのリンク先から頂きました。
今回のバージョンは2.34

 tar zxvf kakasi-2.3.4.tar.gz
 cd kakashi-2.3.4
 ./configure
 make
 make check
 make install

これで完了。これだけ。

namazu
安定バージョン 2.0.12を使用しました。

 tar zxvf namazu-2.0.12.tar.gz
 cd namazu-2.0.12

で、そのままインストールを始めると事前に必要な File-MMagicが入っていないのでエラーになります。
これはnamazu一式に同梱されているのでこのままFile-MMagicを先にインストールします。

  cd File-MMagic
  perl Makefile.PL
  make install

これで完了

  cd ..
  ./configure
  make
  make install

これでnamazuもインストール完了


namazuを使う
namazuに関する主なファイルは3つ
 (1)mknmz ・・・・ インデックス作成
 (2)namazu ・・・・  コンソールで検索
 (3)namazu.cgi ・・・・ Cで作成された検索CGI
 あとは設定ファイルが1つあります。


1、まず、インデックス作成の為の mknmz
mknmz -O /tmp/namazu --indexing-lang=ja  /var/www/html
 パラメーター1 -Oで書き出しインデックスディレクトリを指定
 パラメーター2 --indexing-lang=ja で日本語コードを指定。これを指定しないと日本語の検索が出来ない。
   ここで指定しなくても環境変数の設定で行けます。例えば export LC_ALL="ja" をシェルから指定しておけば大丈夫。
 パラメーター3 目的のディレクトリ

この実行で指定ディレクトリにインデクスが作成されます。
通常のnamazuのデフォルトインデックスディレクトリは /usr/local/var/namazu/index  という事なのでそこにいれるのもいいかもしれませんが、とりあえず /tmp/namazu なんぞを使ってみました。

まずはこれで準備完了

2、コンソールから検索  namazu
このファイルも既にインストールが完了しているので
namazu  検索文字  インデックスディレクトリ
とします。
namazu  amm  /tmp/namazu
これでammの文字検索結果が表示されます。

でもこれはコンソールだけなのであくまでテストといいますか動作確認用です。

3、CGI設置
namazu.cgiという、これはスクリプトではなくCで作られたコマンドの様ですがこれが一通りの事をやってくれます。
このcgiは /usr/local/libexe/namazu.cgi にしまわれているので、を目的のWEBファイルのあるディレクトリに移して使います。
パーミッションも実行権限が付いていると思いますが一応確認して下さい。

namazu.cgiが使う設定ファイルを同じディレクトリに置いておきます。
サンプルファイルは /usr/local/etc/namazu/namazurc-sample です。
これを  .namazurc  という名前に変えて、cgiと一緒においておきます。
サンプルから変更した箇所、というか必要な記述は次の4行。
 Index /tmp/namazu  インデックスのディレクトリ
 Template /tmp/namazu  これはIndexといっしょ。NMZ.headなどのHTMLテンプレート
 Replace /var/www/html/ http://xxxxxxxxx.com/   ディレクトリ情報をWEB用に差し替える
 Lang ja_JP.SJIS これをセットしないと検索結果が文字化けする

これでcgiをブラウザから見ると簡単に検索出来るようになっています。
あとは自分用に検索画面をチューニングしたりすればOKです。
インデックスディレクトリにある NMZ.head.ja などがその元になるファイルですがmknmzを実行する度に更新されるので元になるテンプレート
/usr/local/share/namazu/template を編集することで対応できます。

これだけで全文検索システムが稼動できるわけですから大したものです。
あとは定期的に mknmz を実行すれば更新できますね。

※驚いたことに、PDFファイルが置いてあってもちゃんと文面を検索してくれているところがすごいです。

ではnamazuのオリジナル検索画面をこちらにどうぞ

2004.2.25