Report
近年の計算機技術の進歩により、パーソナルコンピュータの性能が飛躍的に向上したため、キャッシュサーバ、WWWサーバ、簡易検索エンジンを個人で運用することが可能となっている。 そこで、従来bookmarkで行っていた機能のうちデータベース機能を提供するシステムをsquid, apache, namazuを用いて構築した。
そこで、squidを用いて巡回した全てのHPをcacheしておき、namazuを用いて全文検索を行うことを考えた。 これができると、自分が訪問したHPだけを検索対象にできるし、検索結果のURLはcacheされているので、高速な検索と高速なアクセスが可能となる。 プログラムや大きな画像のダウンロードを別にすると、一人の利用者が1日に巡回するHPのデータ量はせいぜい数MB程度、cacheには1ヶ月あたり100MBもあれば十分であろう。 namazuをcgiで利用すれば、全てをブラウザから行うことができ、各個人専用の検索エンジンを作ることができる。
この目的で各ツールを見ると、ほとんどは適切な設定を行うことで実現可能であった。 唯一、namazuの検索結果の表示において登録したファイルに対するリンクしか張られないという不都合があった。 この不都合を解決するため、namazuのソースを解析してcache元のURLへのリンクも表示するように改良した。
以下に筆者が行った変更と設定を示す。
次にnamazuのコマンドであるmknmzをsquidのcacheファイルが取り扱えるように 変更 する。
% mkdir /usr/local/squid/cache/namazu % cd /usr/local/squid/cache/namazu % cp /usr/local/bin/mknmz . % patch < 12_sqnmz.txtmknmzの変更点は、以下の4点。
検索用インデックスを作る。
% cd /usr/local/squid/cache/namazu % ./mknmz -S "" "/usr/local/squid/cache/"
例えば、毎日22:00に検索用インデックスを更新したい場合、crontabを以下のように設定しておく。
---crontab.file--- 0 22 * * * cd /usr/local/squid/cache/namazu; ./mknmz -qS "" "/usr/local/squid/cache/" ------ % crontab crontab.file
ここまででコマンドラインでの検索ができる。
以下のファイルに加筆する。 これによって/usr/local/squid/cache/をhttp://your.host.jp/cache/でアクセスできるようになる。
---/usr/local/apache/conf/httpd.conf--- Alias /cache/ "/usr/local/squid/cache/" <Directory /usr/local/squid/cache> AllowOverride All Options FollowSymLinks ExecCGI AddHandler cgi-script .cgi DefaultType text/html </Directory> ------
以下のファイルを作成する。 これによって、cacheファイルに対するリンクを正しく表示できるようになる。 なお、このファイルでは空白はスペースではなく必ずtabである必要がある。
---/usr/local/squid/cache/.namazurc--- INDEX /usr/local/squid/cache/namazu BASE http://your.host.jp/cache/ ------
cgiコマンドをコピーしておく。
% cp /usr/local/bin/namazu /usr/local/squid/cache/namazu.cgi
利用するブラウザにはhttp proxyとno proxyにyour.host.jpを登録しておく。
完了。 これでhttp://your.host.jp/cache/namazu.cgiにアクセスすればcacheファイルの検索ができる。