Google ライクなキャッシュを Namazu 上で実現する


はじめに

唐突ですが、私はNamazu という検索ツールを愛用しています。 もう便利で手放せないです。製作者の方々には感謝してます。ほんと

具体的にどのように運用しているかというと、 IO-DATA の LANDISK (要は Samba と Apache が組み込まれた Linux マシン)に Namazu を仕込み、

  1. 気に入ったページがあると urlcmd 等で入手し、LANDISK 置く
  2. 定期的にインデックスを更新
  3. LANDISK 上の apache にアクセスして検索
といったことをやっています。

という訳で、入手したページは LANDISK の中に入っています。 この際、Namazu 検索の結果上のリンク先を、LANDISK の中に溜め込んだファイルにするか、実際のページにするか悩みます。 キャッシュにすると速いしサーバやネットワークに負荷をかけずに済みます。 特に我が家のように電話局から遠く、ADSL のくせに 200Kbps も出ない所ではありがたいです。 しかし一方、キャッシュだけ見ていると最新の情報が 得られない可能性も否定できません。

そこで Google のキャッシュのように 検索結果においてオリジナルとキャッシュの両者が出るようにできないもんかと 改造してみました。

パッチ

パッチは こちら です。 Namazu 2.0.12 用として作りましたが、 公開に当たって 2.0.13 でも試して見ましたが大丈夫なようです。 ちなみに当て方は namazu-2.0.12/src ディレクトリの下で
$ patch < namazcache.pach
と実行します。

使い方

要は NMZ.result にキャッシュ用のコマンド ${cache} を作りました。 こいつは ${uri} とほとんど同じ動きをしますが、唯一の違いは一番最初の文字が @ になることです。 後はこれを使って .namazurc の Replace を使って適当に変換します。

分かる人にはこれだけで分かると思いますが、 念のため以下に私の場合の構築例を記します。 ちなみに私はインデックス生成は Windows から Namazu for Win32 を使ってやってます。 cron 等を使って LANDISK で定期的に自動更新とかも出来るとは思います。 おそらくその方が速いでしょう。不精なだけです。 いろいろ長く書いてますがミソは 7 と 10 です。

  1. LANDISK (要は Samba が乗った Linux マシン) 上のあるディレクトリを Windows マシンから L ドライブにする。
  2. L ドライブの下に htdocs ディレクトリを掘る。
  3. htdocs の下に index.html を作り、LANDISK からアクセスできるようにする ここでは http://landisk.hoge/~foo/ だとして話を進めます (この辺のやり方は調べてください)。
  4. index.html の中身は次のフレーズを追加
    < FORM ACTION="/~foo/PageCopy/NamazuBin/namazu.cgi" METHOD="get" >
    検索 < INPUT NAME="query" SIZE=40 >
    < INPUT TYPE="submit" VALUE="Search" >
    < /FORM >
  5. 2. の htdocs の下に PageCopy というディレクトリを掘り、その下に NamazuBin, NamazuIndex, Pages というディレクトリを掘る。
  6. NamazuBin の下に本パッチを当てて作った namazu.cgi をコピーする (シンボリックリンクでも可)。
  7. さらに同じ所に .namazurc というファイルを作り以下のように書く
    Index ../NamazuIndex
    Replace /L\|/htdocs/PageCopy/Pages http:/
    Replace @L\|/htdocs/PageCopy ..
  8. htdocs/PageCopy/Pages の下に集めたページを置く。仮に urlcmd を使う場合は 実行コマンドとして、
    d:\tools\urlcommand\urlget $U L:\htdocs\PageCopy\Pages\$u
    とでも書く (urlget のパスは入れた場所にあわせる)。
  9. 以下のコマンドを実行。
    mknmz -O L:/htdocs/PageCopy/NamazuIndex L:/htdocs/PageCopy/Pages
    定期的に行うのでバッチファイルにしとくといいでしょう。
  10. NamazuIndex の下に NMZ.result.normal.ja というファイルができるので、 最後の行を次のように書き換える
    < dd > < a href="${cache}" > キャッシュ < /a > (${size} bytes)< br > < br >
後は 8-9 の繰り返しです。


追記

  1. 後で考えると, なんかこんなパッチを当てなくても, 上記 10 の手順で
    < dd > < a href="X${uri}" > キャッシュ < /a > (${size} bytes) < br > < br >
    とでも書いて, 7 の手順で
    Replace /XL\|/htdocs/PageCopy ..
    Replace /L\|/htdocs/PageCopy/Pages http:/
    とでも書けばいいような気がします. 未確認ですが...

    Replace の順が重要なので, もしかしたら逆かもしれませんが.

  2. LANDISK への namazu インストールは こちら を御覧ください.

[戻る]