November 03, 2004

msearch

 エントリ数が700を超え、「あの話はどこに書いたっけな」と確かにメモしたのに肝心のメモした紙が見つからない状態が以前から時々発生するようになってきた。何だか発想が若くないが、機械に任せられることは任せればいいのだ。

 検索といえばgoogle。もちろんサイト内検索機能はあるのだが問題が一つある。こんな辺境のサイトを隅々までインデックスに入れて保持してくれるわけがないどころか、下手をするとトップページしか拾われてなかったりする。特にサイトを作って間もない頃はこの状態が続いて悲しい。

 んじゃnamazuじゃろと導入しようとしたものの、Unicodeの壁にぶち当たって頓挫。その後Unicode対応の全文検索エンジンの存在を知りつつ時は流れてnamazuから6ヶ月。msearchを設置してみたらこれがすこぶる簡単だった。

きてーや.ねっと / スクリプト / msearch
HP内全文検索エンジン - Unicode版msearch移転
HP内全文検索エンジン - Unicode版msearch

 うちはUTF-8メインだからUnicode版を選ぶぜー。

 設定してアップロードしてパーミッションを確認して動作チェック。ブラウザからgenindex.cgiを呼び出してインデックスを作成する。対象拡張子を.htm,.htmlにしてルートから全部やってみたとところ、自分でも忘れてるようなファイルまで底引き網のようにかき集めてきた。しばし迷いつつ、除外フォルダ設定では数が多くて面倒なのでMovableTypeのarchivesディレクトリ以下を対象にする方向にした。

 カテゴリアーカイブと月別アーカイブは重複して邪魔な上にサイズが大きいので除外する。知恵と勇気で正規表現。知恵がだいぶ足りないという突っ込みはナシで。

(cat_.+\.html),(index\.html)

狙い通りになったのでよしとする。うちはURLが年月日時分になってるのでURL降順でソートすると新しいものから並んで都合がよかった。weblogの場合タイムスタンプはrebuildしたときのものになる事が多いし。そんなこんなでインデックス完成。ページ数は700ほどでインデックスのサイズは1Mくらいだった。MTからExportしても1M弱なので、だいたい同じくらいか。
サーバー上で済ませられるのは楽でいい。

 cronに登録して一日一回自動更新。検索も早いし大満足。

 Unicode版msearchがここまで簡単便利だと、別のところにも使ってみたくなる。書庫的なサイトで、隅から隅までshift_jisなので本家版msearchを使うことにする。

 ファイル数は100程度と少ないもののhtmlだけで全部合わせて13Mあるので、サーバー上でのインデックス作成は無理だろうと思いつつ、一応やってみた。
作成
→Out of memory!
フォルダごとに小分けして作成
→Out of memory!

 うぬぬ。んじゃローカルでやってみようとコマンドプロンプトからActivePerlでgenindex.plを走らせてみるものの、化け化け。EUCじゃ無理か。FAQを見つつ化け文字と対話してみたが、何か言っててインデックスを作成してくれないのだが何言ってるのかわからない。仕方ないのでlinux機を起動してそっちでやることにした。

※今FAQを眺めてたら答えが。

C:\> perl genindex.pl -s
のように"-s"とオプションを指定するとSJISでgenindex.plと対話できます

ひーん。次からこれでやろう。

 せっかくなのでインデックスを作成しつつsshをもう一画面起動してtopで眺めておいた。Celeron533MHzが100%近くでがんばっていた。
作成時間:約4分
メモリ使用量:約30M

XREA SUPPORT BOARD - サーバ負荷に関する制限の確認
メモリー制限(1プロセス25メガバイト)

うむ惜しい。じゃなくていずれにしろ負荷制限でエラーになるか。

 作成されたインデックスは8.5M。検索で特に時間がかかるということもない。さりげなく負荷が高かったらどうしようと思ってみたりする程度。

 msearch面白いなぁ。


Posted by Mobius at November 3, 2004 18:41 | PC/Web

コメント
コメントする(要ひらがな)









名前、アドレスを登録しますか?