namazu検索窓の導入
sorry Japanese only
最終更新日 2004/09/12
page size = Mbyte

このサーバー内の文書に対して namazu検索を出来るようにしてみました。
こんな検索窓から、自サーバー内だけを、独自に作成した indexより検索できるようになります。
(2007年3月追記:namazuから Hyper Estraierへ変更したので、現在下の検索窓からの namazu検索は行えません)



必要なファイルは以下の通りです。

namazuソースコード 全文検索システム Namazu
kakasiソースコード KAKASI - 漢字→かな(ローマ字)変換プログラム

インストールする順番は、
kakasiの解凍
kakasiを configure - make - make install
namazuの解凍
namazuの File-MMagicディレクトリーで perl Makefile.PL - make install実行
namazuの configure - make - make install
mknmzrcファイル作成
mknmz実行
.namazurc作成
namazu.cgiをコピー
cgi呼び出し検索窓の追加
各 html元ファイル変更

と言う流れで進めると、インストールできると思います。

まずは、kakasiの解凍

downloadした kakasi-2.3.4.tar.gzを解凍します。
tar zxvf kakasi-2.3.4.tar.gz

解凍したディレクトリーへ cdし、以下のコマンドを実行していきます。
configure
make
make install

別段オプションが必要だとか、エラーが出たとかは無く順調に終了しました。

kakasiを installせずとも namazuは make完了するのですが、mknmzを実行した時、以下のようなエラーが出て使い物になりません。
sh: no: command not found
Broken pipe


次に downloadした namazu-2.0.13-1.tar.gzを解凍します。
tar zxvf namazu-2.0.13-1.tar.gz

まずは、解凍したディレクトリー内の File-MMagicディレクトリーにて perlの MMagicコマンド?を作成します。
[root]# cd namazu-2.0.13/File-MMagic
[root]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for File::MMagic
[root]# make
cp MMagic.pm blib/lib/File/MMagic.pm
Manifying blib/man3/File::MMagic.3pm
[root]# make install
Installing /usr/lib/perl5/site_perl/5.6.1/File/MMagic.pm
Installing /usr/share/man/man3/File::MMagic.3pm
Writing /usr/lib/perl5/site_perl/5.6.1/i386-linux/auto/File/MMagic/.packlist
Appending installation info to /usr/lib/perl5/5.6.1/i386-linux/perllocal.pod


次は namazu本体を
configure
make
make install
を実行します。

最初、MMagicディレクトリーで処理をやらずに namazuを作成したら、mknmz実行時に以下のようなエラーが出ました。
Use of uninitialized value in pattern match (m//) at /usr/bin/mknmz


mknmzrcファイルの作成

index作成時に使う mknmzコマンド用の初期設定ファイル mknmzrcファイルを作成します。
/usr/local/etc/namazuに mknmzrc-sampleがコピーされていますから、これを元ネタにして作っていきます。
保存先は、/usr/local/etc/namazu/mknmzrcです。
元のサンプルからいじった所だけ説明すると

$EXCLUDE_PATH ="/home/localhost/cgi-bin/.*|/home/localhost/c_count/.*";
超重要。
検索エンジンのロボットは、リンクでたどり着ける所のみを検索対象にしますが、namazuは localなファイルとしてアクセスするため、公開していようといまいと、検索対象にしたディレクトリーを全て index作成してしまいます。
見られては困るディレクトリーは、上記のように | (パイプ)で繋げて mknmzコマンドの検索対象から外しておきましょう。

$DIRECTORY_INDEX = "/var/namazu";
mknmzで作成される indexファイルの出力先を書きます。
私のサイトで、66個 合計 2Mbyteのファイルが出来上がりました。

$TEXT_SIZE_MAX = 5000000;
大きい htmlファイルになると、デフォルトの設定だと除外ファイルとなってしまうので、少し大きくしておきました。

$KAKASI = "/usr/local/bin/kakasi -isjis -osjis -w";
私のサイトは shift_jisなので、kakasiの出力も sjisとなるようにしておきます。

全文はこちら => mknmzrc
(EXCLUDE_PATHはウソが書いてあります)


mknmzを実行します。
が、一番最初は、indexファイルの書き出し先を自分で mkdirしておきます。
[root]# mknmz /home/localhost --html-split -O /var/namazu --config=/usr/local/etc/namazu/mknmzrc -k
検索対象のファイルを調べています...
162個のファイルがインデックス作成の対象として見つかりました
1/162 - /home/localhost/696/696.html [text/html]
2/162 - /home/localhost/696/bright/bright.html [text/html]
3/162 - /home/localhost/CUSCO/CUSCO.html [text/html]
4/162 - /home/localhost/CUSCO/cusco2.html# [text/html]
    1/1 - /home/localhost/CUSCO/cusco2.html#990521c [text/html]
5/162 - /home/localhost/HID/HID.html# [text/html]
    1/16 - /home/localhost/HID/HID.html#990809h [text/html]
    2/16 - /home/localhost/HID/HID.html#990820h1 [text/html]
    3/16 - /home/localhost/HID/HID.html#990302h4 [text/html]
途中省略
    20/21 - /home/localhost/tyre/tyre.html#990514t [text/html]
    21/21 - /home/localhost/tyre/tyre.html#000902t4 [text/html]
162/162 - /home/localhost/water/water.html [text/html]
インデックスを書き出しています...
[基本]
日付:                Sun Sep 12 21:08:56 2004
追加された文書の数:  488
サイズ (bytes):      2,565,924
合計の文書数:        488
追加キーワード数:    44,655
合計キーワード数:    44,655
わかち書き:          /usr/local/bin/kakasi -isjis -osjis -w
経過時間 (秒):       43
ファイル/秒:         11.35
システム:            linux
Perl:                5.006001
Namazu:              2.0.13

mknmzrcは、検索パスにのっとって探し出して適用する。
と言うことらしいですが、いまいちうまく動作しないので、オプションでファイルの場所を指定した方が確実のようです。


/usr/local/etc/namazu/mknmzrc-sampleを元ネタに .namazurcを作成します。
保存場所は namazu.cgiがあるディレクトリーです。

Index /var/namazu
indexファイルのある場所を指定する。

Template /var/namazu
テンプレートのある場所を指定する。

Replace /home/localhost/ http://miya0.dyndns.org/
localのディレクトリーと httpで見えるディレクトリー構造の相対関係を記述する。

Lang ja_JP.SJIS
私の場合は jpで sjisなのでこのような指定にしました。


namazu.cgiにて hp上より検索

/usr/local/libexec/namazu.cgiを hpより見える位置へコピーします。
namazu.cgiは .cgiなどと拡張子が付いていますが、実はバイナリファイルです。

それでは htmlに以下のように検索窓の指定をします。

このサイト内のみ検索
<FORM ACTION="namazu.cgi" METHOD=get>
<P><INPUT TYPE=text NAME=key VALUE="" SIZE=40>
<INPUT TYPE=submit NAME="送信" VALUE="検索">
</FORM>

すると以下のような検索窓が現れます。

このサイト内のみ検索



あとは、出力される画面構成の変更です。

NMZ.body,NMZ.foot,NMZ.head,NMZ.result.normal,NMZ.result.short,NMZ.result.tips
などの中身を見て自分の好きなように変更していきます。
私は何も変更していないので、メールアドレスとか、ウソが表示されてます・・
ちなみに、NMZ.foorを検索すると、私の場合 /var/namazuと /usr/local/share/namazu/templateに同じ物が存在しますが、templateディレクトリーにある物が mknmzを実行すると /var/namazuへコピーされますから、元ネタの templateディレクトリーの物を書き換えておかなければ、上書きされてしまい意味がありません。


以下のサイトを参考にさせていただきました。(敬称略、順不同)
Namazu 2.0 入門
検索の組み込み方
Namazu講座 [SMART!]
マニュアルに書いてないNAMAZU

13329
戻る