Lifehacks is Beautiful RSS

Aug
13th
Mon
permalink

Slogger + 全文検索

SloggerとはFirefoxの拡張機能のひとつで、簡単に言うと読み込んだWebページを次から次へとローカルへ保存していくもの。比較優位は次の通り。

* HTMLで保存されるため取り扱いが容易。(ポータビリティの確保)
* 永続保存ができるためデータが上書きされたり失われることはない。
* 設定が簡単。
* 当たり前だけど、Firefoxで使うことができる。
* 保存先は自由。

とまぁ、今まで見送ってきた策にあった欠点はだいたい解決されている。逆にSloggerの欠点としては以下が考えられる。

* Firefoxでしか使うことができない。(ブラウザ依存の問題)
* よく見るページは何度も重複して保存される。

上はともかく、下はキャッシュの特性と二者択一であり、解決させるのは難しいと考え諦めた。設定はウノウサーチなき後firefoxとsloggerでがんばるメモ - かめぞうを参考にした。ダウンロードは以下より。

http://www.kenschutte.com/slogger/
Sloggerの設定

■[Save Pages]タブ
Folder Z:\nbin\slogger\archive\$year-$month\$day
(1ヶ月ごとだと結構な量になりメンテナンス性が低下するので日毎にした)
Filename $year-$month-$day_$hour-$minute-$second-$millisecond.$typeext
■[Log File]タブ
Folder Z:\nbin\slogger\log
Filename slogger_text_log-$year-$month.txt
Entry $year-$month-$day_$hour-$minute-$second-$millisecond.$typeext $url
Append at beginning
■[Filters]タブ
Block 600sec (3600secくらいでもいいと思う)
Blacklist
“$host”==”192.168.1.11” (ローカルWebサーバの保存の抑止)
“$url”.match(/^file:/) (ローカルファイルの保存の抑止)
“$url”.match(/^about:/) (設定ページの保存の抑止)
“$url”.match(/[.]google[.]/) (Google検索結果及びGmailの保存の抑止)

参考先と全然変わってないですね…。失礼。

これでSave Pagesで指定したフォルダに、閲覧したページが以下のようにHTMLファイルとしてずらずらと保存されていきます。引きこもって適当にネットやって1日が終わったならば、自分の場合は20MB/dayくらいです。

http://leminx.com/hatena/20070530a.png

アクセスログは次のようなイメージ。

http://leminx.com/hatena/20070530b.png
Hyper Estraier

Hyper Estraierを使って、溜め込んだHTMLを全文検索できるようにする。参考にしたサイトは以下の通り。

* http://hyperestraier.sourceforge.net/ (ダウンロード)
* http://hyperestraier.sourceforge.net/intro-ja.html (インストール)
* http://digit.que.ne.jp/work/index.cgi?%E3%83%A1%E3%83%A2%2FHyperEstraier(Win32) (導入記録)

インストールはC:\hyperestを作り、zip展開後のファイルを入れ、システムのプロパティから環境変数の設定で、変数”Path”に値”C:\hyperest;”を追加。これで完了。インストール先フォルダは例であり、実際はどこに入れても可。

Namazu同様、インデックスを作る必要がある。

(estcmd gather -il ja -sd インデックスディレクトリ 検索対象ディレクトリ)
estcmd gather -il ja -sd c:\files\nbin\slogger\index c:\files\nbin\slogger\archive

以上でインデックスは構築される。
AN HTTPD

検索にはhttpdが必要になるためAN HTTPDをチョイス。理由はインストールと設定とアンインストールがApacheに比べて楽だから。一般設定のところで「CGIを許可する」にチェックを入れるのはもちろんのこと、「EXE形式で実行する」にもチェックを忘れずに入れること。これ入れないとestseek.cgiは動きません。

* estseek.cgi
* estseek.conf
* estseek.help
* estseek.tmpl
* estseek.top

estseekから始まるファイルは上記の5つあるため、これをAN HTTPDのcgi-binフォルダに入れる。estseek.confの設定について、indexnameにはインデックスを構築したフォルダを指定。replaceでは、ローカルパスになっているアドレスをアクセスできる形式に変換することが目的。その他はいじらないでよし。以下サンプル。

indexname: c:\files\nbin\slogger\index
replace: ^file:///c\|/files/nbin/slogger/archive/{{!}}http://192.168.1.11/

特に | は正規表現におけるメタ文字なので、\でエスケープさせることを忘れずに。またreplaceでは大文字小文字を区別するようです。以上で検索はできるようになった。

http://leminx.com/hatena/20070530e.png
▲完成図 キーワード「Google」で検索。クリックで拡大。

課題がひとつある。たくさん見たページはたくさん保存されていくということだ。ニュースサイトなどは毎回トップが変わるからまだ救いがあるものの、リファレンスとかドキュメント系は悲惨の一言。

http://leminx.com/hatena/20070530f.png
▲唯一にして最大の問題 。クリックして拡大。
タスクスケジューラでのインデックスの更新

インデックスは勝手に更新されていくわけではなく、定期的に更新していく作業が必要ですが、人の手でそんなルーチンワークを行うのは面倒くさいので自動化させます。以下をバッチファイルとして保存し、タスクスケジューラに登録する。

@echo
estcmd gather -cl -il ja -sd c:\files\nbin\slogger\index c:\files\nbin\slogger\archive

これで完了。
補足: NamazuとHyper Estraierの比較

実は当初、全文検索にはNamazuを利用したものの、検索結果に納得がいかなくて前々から気になっていたHyper Estraierにした。理由は3点。
1. インデックス構築速度の差

Celeron 950MHz, 192MB RAMのPCで、ファイル数684、サイズ27MBの文書をインデックス化したところ、Hyper Estraierは44秒で終わったのに対し、Namazuは6分50秒かかった。ただしインデックスのサイズは、Namazuが3.72MBであったのに対し、Hyper Estraierのそれは13.9MBあった。

http://leminx.com/hatena/20070530c.png

http://leminx.com/hatena/20070530d.png
2. デフォルトのインターフェイスの差

* http://mm.apache.or.jp/mailman/namazu.cgi (Namazu)
* http://athlon64.fsij.org/~mikio/wikipedia/estseek.cgi?clip=8 (Hyper Est)

3. 検索結果の差

Namazuはファイルの先頭100byteを表示するのに対し、Hyper Estraierはヒットした文字の前後を表示するため。