枕草子 (My Favorite Things)

【第169回】 全文検索システムNamazuの設置(1999年10月14日)

昨夜は,湯島のシンスケという店で久々に酔った。うまい酒とうまい料理(中でも松茸? と白身魚をあしらった汁物が絶品であった)と楽しい会話のおかげで飲んでいる間は気持ちよかったのだ。上野駅までも踊るように歩いていけたのだ。しかし,踊るように歩けたのは,実は飲み過ぎのせいだったらしく,新幹線の中で気持ち悪くなり,今朝に至ってもやや宿酔気味であった。まあ,たまにはいいか。

さて今日の本題は,この「枕草子 My Favorite Things」も含め,サイト内の情報量が多くなりすぎて,必要なファイルを見つけるのが大変になってきたので,Namazuによる全文検索システムを設置してみたという話である。ただし,サーバ2号機ではメモリが足りず,インデックスが作れなかったので,2号機にしか存在しない「書評掲示板」や「WEBテクニック挑戦ページ」は検索対象外である。インデックスを作る方式なので,素朴にPerlでパターンマッチをするよりも格段に速く便利である。是非試してみて欲しい。MHonArcを使ってメーリングリストのアーカイヴをhtmlにしたものに対してインデックスを作らせれば,メーリングリストの過去ログの全文検索も高速にできるようになるので便利だろうと思う。サーバ1号機の/etc/aliasをうまく書いて,MLにそれを登録すれば,たぶん過去ログ検索システムだけは1号機に置く,ということもできるだろう。今はまだやらないが,将来的には負荷分散のために考慮すべきかと思う。

さてNamazuの設置の仕方を書いておこう。LinuxやFreeBSD上なら,実に簡単である。完全に自分のホームディレクトリに置いてもいいのだが,もしかしたら同じサーバ上の他のユーザが使うかもしれないので,/usr/localにインストールすることにした。まず,サーバ1号機にtelnetでログインし,Lynxを起動して,全文検索システムNamazuのサイトから,Version 1.3.0.10を,KAKASI - 漢字→かな(ローマ字)変換プログラムのサイトから,バージョン2.3.0(kakasi-2.3.0.tar.gzとkakasidict.940620.gzの両方)をダウンロードした。Lynxを終了してから,まずサイトの「インストール」というところに書かれている通りにKAKASIをインストールした。make installmake dict-installsuしてroot権限でやったが,他は書かれている通りでよかった。

Namazuのインストールも基本的には簡単で,オンラインマニュアルソースからインストールするというところに書かれている通り,tar xvzfで展開し,srcディレクトリに入ってから./configureしてmakeし,suしてrootになってからmake installするだけであった。次はインデックスを作るのだが,cgiをhttp://www.humeco.m.u-toyko.ac.jp/humeco/cgi-bin/におくなら,インデックスはそこにディレクトリを作ってその中に収めるのが美しいだろうと考え,以下の作業を行った。

まず/usr/local/namazu/lib/namazu.conf-dist/home/minato/html/cgi-bin/.namazurcにコピーし,

#INDEX /usr/local/namazu/index
#REPLACE /home/foo/public_html/ http://www.hoge.jp/%7Efoo/

となっているのを,

INDEX /home/minato/html/cgi-bin/search
REPLACE /home/minato/html/ http://www.humeco.m.u-tokyo.ac.jp/%7Eminato/

と変更してから,/home/minato/html/cgi-bin/の下にsearchというディレクトリを作って,その中で,mknmz /home/minato/htmlとすると,インデックスができあがる。この状態では表示されるアドレスが変なので,searchディレクトリに作成されたNMZ.foot.enNMZ.foot.jaを手作業で編集した。ついでに,updateという更新用スクリプトを属性755で作った。内容は,

#!/bin/sh
mknmz /home/minato/html

の2行だけであるが,htmlを更新したらupdateを実行すればよいようにしたわけだ。

cgi本体は,namazuをコンパイルしたsrcディレクトリにnamazu.cgiというのがあるので,これをコピーしてくればよい。つまり,cp ~minato/src/namazu-1.3.0.10/src/namazu.cgi ~minato/html/cgi-binである。本当は<FORM>タグを使って呼び出せば(method="get"にすることに注意)いろいろ設定できるのだが,namazu.cgiを呼ぶだけで十分使えるのでやめた。これだけで高速な全文検索システムができてしまうとは,Namazuというのは何ともたいしたソフトであることよ。


前【168】(人口60億人の日(1999年10月12日) ) ▲次【170】(日記CGIを開発しながら青空を見上げれば(1999年10月20-21日) ) ●枕草子トップへ