fml のメーリングリストを WWWで公開つつ全文検索システムを構築(2002/09/06, 更新日:2003/04/01) 
 

前提条件ソフトウエアのバージョン

・WWWサーバ(apache 1.3.x)がインストールされていること。

・fml(4.03) のセットアップが済んでおり、メーリングリストが正しく運用できていること。

・fmlでの機能のHTML化指定がされていないこと。

・MHonArcが正しく動くこと。

Namazu 2.0.12

あるファイルから検索したい文字列を探す場合、普通は頭からファイルを読んで最後まで、・・と行いますが、ファイルが多くなるとこれが大変な時間が掛かってしまします。特に、日本語での全文検索というと、これが一筋縄ではいかないのです。こんなとき貴方はどします? システム屋さんにお願いしますか?  いえいえ Namazu を使用すると、簡単に全文検索システムを構築することができます。

日本語の成り立ちから、文章を切り分ける「分かち書き」の方法等々のお話を易しく説明し、かつシステム構築までおこなう方法をまとめた本を見つけましたので紹介します。

著者:馬場 肇著
出版:ソフトバンクパブリッシング
サイズ:B5変形 / 267p
ISBN:4-7973-1641-1
発行年月:2001.6
本体価格: \2,800

※fml を運用してて・・・。WWW公開もしたい、しかも全文検索も、という人には、もってこいの一冊です。こんなに簡単に構築できるんだーと思いました。買って損なしです。

  本家Namazu 2.0 入門

  参考 : Namazu 2.0 入門

  参考 : マニュアルに書いてないNAMAZU

  参考 : Namazuの導入

設定方法

Namazu 2.0.12 は、「Perl(5.0004以上), nkf, kakasi, Text::Kakasi, File-MMagic(Namazuに梱包)」のプログラムを必要とします。インストールは下記の手順通り行えば、問題ないと思いますが、万が一 Namazu がうまく動作しない場合は、途中の手順をよく見直して設定してみてください。ちなみに途中をやり直したら Namazu は、 ./configure からやり直してくださいね。 

1) Perl のバージョンを確認します。MHonArc をインストールするときにも説明したかもしれませんが、5.0004以上のバージョンを使うのがよいかもしれません。漢字でハマる事があるらしいです。

# perl -v

This is perl, version 5.005_03 built for i386-linux

Copyright 1987-1999, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5.0 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

2) nkf をインストールします。Qube3j には、もともとnkf は、入っていますがバージョンが低いので上書きしちゃいますー。

$ cd ./src
$ mkdir nkf
$ cd nkf
$ wget ftp://ftp.ie.u-ryukyu.ac.jp/pub/software/kono/nkf171.shar
$ /bin/sh nkf171.shar
$ cd NKF
$ perl Makefile.PL
$ make
$ su
# make install
# exit
$ cd ..
$ make
$ make test
$ su
# make install
    → 失敗します(泪)が・・・ま、手作業で・・・。

# cp -ip /usr/local/sbin/nkf /usr/local/sbin/nkf.old
# cp -ip /usr/man/man1/nkf.1 /usr/man/man1/nkf.1.old
# cd ./src/nkf
# cp -ip nkf /usr/local/sbin/nkf
# chmod 755 /usr/local/sbin/nkf
# cp -ip nkf.1 /usr/man/man1/nkf.1

3) kakasi をインストールしませう。

$ cd ./src
$ wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
$ gzip -cd kakasi-2.3.4.tar.gz | tar xf -
$ cd kakasi-2.3.4
$ ./configure
$ make
$ su
# make install

4) そんでもって Text::Kakasi もインストールしませう。

$ cd ./src
$ wget http://www.daionet.gr.jp/~knok/kakasi/Text-Kakasi-1.05.tar.gz
$ gzip -cd Text-Kakasi-1.05.tar.gz | tar xf -
$ cd Text-Kakasi-1.05
$ perl Makefile.PL
$ make
$ make test
$ su
# make install

5) やっと Namazu だい。と思うでしょ? 甘い甘い、環境変数をちゃんと設定しましょ。

export PERL_BADLANG=0
export LANG=ja
PATH=/usr/local/sbin:/usr/sbin:/sbin:.:~/bin
PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:$PATH

6) おまた Namazu です。

$ cd ./src
$ wget ftp://ftp.namazu.org/namazu/stable/namazu-2.0.12.tar.gz
$ gzip -cd namazu-2.0.12.tar.gz | tar xf -
$ cd namazu-2.0.12

$ cd ./File-MMagic   ← File-MMagic
$ perl Makefile.PL
$ make
$ su
# make install
# exit
$ cd ..      ← Namazuです
$ ./configure
$ make
$ make test
$ su
# make install

7) うまくインストールできたら、下記のコマンドを実行してみて漢字が表示されれば ok です。この段階で、漢字が表示されない場合は、Namazu で漢字が使えません。

$ mknmz
  使い方: mknmz [オプション] <対象>...
  `mknmz --help' でより詳しい情報が表示されます

8) fml で作ったメーリングリスト(elena)を MHonArcでHTML化したファイルを Namazuインデックス化してみましょ。

$ mknmz -O /home/namazu/elena /var/spool/ml/elena/archives
   ずらずら・・・と表示されれば ok !

9) Namazuインデックス化された中から「murachi」を検索してみましょ。

$ cd /home/namazu/elena
$ namazu murachi .
   ずらずら・・・と表示されれば ok !

WWWから Namazu.cgi を使う

ここまでくれば、もう完成も間近です! がんばりましょー。と。

1) Namazu.cgi を動かす場所を決め、Namazu.cgi をコピーします。下記は、例です・・・よ。

# cp /usr/local/libexec/namazu.cgi /home/groups/home/web/namazu/elena
# chown admin /home/groups/home/web/namazu/elena/namazu.cgi
# chmod 755 /home/groups/home/web/namazu/elena/namazu.cgi

2) Namazu.cgi の環境設定ファイルを設置します。

# cd /home/groups/home/web/elena/cs-asobi
# cp /usr/local/etc/namazu/namazurc-sample .namazurc
# vi .namazurc

3) 設置が終わったらブラウザでみてみましょー

http://localhost/namazu/elena/namazu.cgi

cronの設定化

namazu_elena.sh を使って cron 化します。

crontab に以下の様に設定します。

0,10,20,30,40,50 * * * * namazu_elena.sh 1> /dev/null
0,10,20,30,40,50 * * * * mhonarc_elena.sh 1> /dev/null

WebDAV を使用している時の弊害

WebDAV を使用している場合、mod_encoding の指定方法を誤ると namazu,cgi の検索時に思いがけない問題が発生する場合があります。mod_encoding の設定で「EncodingEngine on」と指定すると、HTTPリクエストストリング全てをURIアンエスケープし、かつサーバで使用している漢字コードに全て変換してしまいます。

このためパソコンで「検索」の文字列を入力し、サーバに送信された段階で SJIS → URIアンエスケープ → EUC(さいきんのサーバは、大抵 EUC です)変換されてしまい、namazu.cgi で受け取った段階では、??なに?? という文字列になってしまうため正しく検索することができません。

回避方法としては、下記の様に WebDAV として使用するディスク(エイリアス)を指定し、それ以外の場所では、mod_encoding による影響を無くす方法をとります。

<IfModule mod_encoding.c>
   <Location /DAV>
      EncodingEngine On
      SetServerEncoding UTF-8
      AddClientEncoding "Mozilla/5" JA-AUTO-SJIS-MS
   </Location>
</IfModule>

詳しい方法は、Re: Netscape + Apache日本語で検索できない?」を参照してください。私は、これで半日 (?_?) こーいう状態でした。