Namazu インデックス作成プログラム cgi 版 (tiny_mknmz.cgi) 説明書

in pnamazu-2006.12.23 by furukawa@tcp-ip.or.jp

tiny_mknmz.cgi は、Namazu のインデックスを簡易的に作成する スクリプトです。 実際に使うためには、いくつかの設定、注意が必要です。この文書を必ずお読みください。

注意事項

Namazu のシステムは、

から構成されます。

mknmz で時間のかかる部分をあらかじめ計算しておくことで、 namazu が検索を速く実行できるわけです。 ですから、インデックスを作るプログラムは、当然時間がかかります。 マシンの負荷にもなり得ます。 それを cgi で実行するということは、誰でもそれをできるということに なります。ですから、そのことを意識して運用する必要があります。 少なくとも、パスワードで保護するなどの措置をすることを推奨します。
(申し訳ありませんが、「パスワードで保護するにはどうすればよいか」 など、本スクリプトに直接関係のない web 一般の質問は御遠慮ください。)

制限事項

tiny_mknmz.cgi によってできるインデックスは、 フォーマット的には Namazu のインデックスに合致しています。

ただし、サブセット的な要素がいくつかあります。

これらは、制限事項ではありますが、悪い事ばかりではありません。

動作上の制限としては、

ということがあります。

(註 1)
これが何を意味するかと言うと、'www.xxx.yyy' のような、単語を記号 で継いだものは、'www xxx yyy' のように分割しないとヒットしない、 ということです。 このままだとちょっと不便なので、検索プログラムとして pnamazu を使った場合には、tiny_mknmz で作ったインデックスを検索する 際に内部的に自動で分割するようになっています。
(註 2)
これについても、pnamazu では、tiny_mknmz で作ったインデックスに ついては、該当するフレーズ演算を and 相当に処理するようにしています。

正規の namazu.cgi では、この制限の影響を受けてしまうことになりますが、 一般には、正規の namazu.cgi を動かせるような環境では、正規の mknmz を使えるでしょうから、結論として、検索するユーザがこのこと を意識する必要は無いと思います。

ただし、pnamazu が tiny_mknmz 用の処理をするためには、 .pnamazurc に 'TinyMknmz 1' と書かれている必要があります。

設定

  1. tiny_mknmz.cgi の先頭部分の設定項目を設定します。 必須の設定は、以下の通りです。
    $top_url
    検索対象コンテンツの最も上位のディレクトリの URL

    プロバイダに自分のページを持っている場合には、
    my $topurl = 'http://ホスト名/~ユーザ名/';
    となる場合が多いでしょう。

    $top_dir
    そのディレクトリのファイルシステム上での名前

    コンテンツを ftp で転送している方は多いと思いますが、 その時に、指定しているディレクトリ名です (例外あり)。
    my $topdir = '/home/ユーザ名/public_html/';
    などですが、プロバイダによって違いますので、よく確認してください。

    $index_dir
    インデックスを置くディレクトリ名

    書き込みが許可されている必要があります。 このディレクトリにインデックスを作ります。

    $tmp_dir
    テンポラリファイルを置くディレクトリ名

    書き込みが許可されている必要があります。 このディレクトリにテンポラリファイルを作ります。 また、このディレクトリには関係ないファイルを置いておかないようにしてください。

    $show_warning
    この変数には本質的な意味はありません。

    説明書を読んでいただきたいために、tiny_mknmz.cgi をただ置いた状態では動作しないようにしている、というだけのものです。 注意事項を御理解のうえ、この変数は undef にしてください。
    my $show_warning = undef;

    $cleanup
    通常は、0 のままにしておいてください。

    tiny_mknmz.cgi は、ブラウザから中断した場合などにも、 できるかぎり lock を解除しようとしますが、場合によっては、 「二重起動」の状態から抜けられなくなることがあり得ます。 そのような場合、この変数を 1 にしてください。lock を解除します。 ただし、1 のままだと、インデックスは作成できませんので、 解除した後で、0 に戻してください。

    必須ではないですが、次の設定はしておくとよいと思われます。
    $nmz_dir
    検索プログラム (namazu.cgi, pnamazu.cgi) を置くディレクトリ

    このディレクトリの書き込みを許可しておくと、.namazurc と .pnamazurc を自動生成します。用が済んだら、書き込み禁止にしておきましょう。

    @deny_dir
    検索対象から外すディレクトリのリスト

    検索対象ファイルが無いことが分かっているディレクトリ、または、 検索対象としたくないディレクトリを指定します。 この指定により、実行時間短縮、使用メモリ節約といった効果が 期待できます。 普通は、 my @deny_dirs = ('/home/ユーザ名/public_html/image/', '/home/ユーザ名/public_html/cgi-bin/'); のような設定になるケースが多いでしょう。

    その他の設定は、tiny_mknmz.cgi の先頭部分を御覧ください。
  2. pnamazu のパッケージ中にある、次のファイルを、 cgi の実行できるディレクトリに置きます。 (3 つとも同じディレクトリに置いてください)
  3. namazu のパッケージ中にある、次のファイルを、(適当に編集して) $index_dir で指定したディレクトリに置きます。

ハイパー日記システムで使うには

  1. ハイパー日記システムを「Namazu の検索フォームを日記に表示する」ようにインストールします。namazu_for_hns をインストールする必要はありません。
  2. 日記の index.cgi や config.ph のあるディレクトリを $hns_dir にセットします。普通は、
    my $hns_dir = '/home/ユーザ名/public_html/diary';

    my $hns_dir = '/home/ユーザ名/public_html/hns-lite';
    のようになるでしょう。
  3. pnamazu.cgi を namazu.cgi という名前で $hns_dir に置き、 $nmz_dir にも $hns_dir と同じ値をセットします。
  4. $index_dir や $tmp_dir に適当なディレクトリを設定します。
  5. 日記だけでなく、他のページも検索するならば、上の記述に従って、 $top_dir と $top_dir を設定します。

その他


furukawa@tcp-ip.or.jp