Home

日記
自分の見たWebページを全文検索する (13:51)Edit

あたりから思いついたネタ。Windows+IEな人向け。

Estraier(http://estraier.sourceforge.net/)のWindows版バイナリをダウンロードする。C:\Estraierあたりにアーカイブを展開しておく。

自分のマシンのIEキャッシュに対して、検索インデックスを生成する。以下のようなコマンドを、[ファイル名を指定して実行]を使って実行する。

c:\estraier\estindex register casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"

最後のパラメータはIEのキャッシュフォルダ名。デフォルトはサンプルのような感じ。ただし[USER名]は自分のWindowsアカウント名に変えておくこと。IEの[インターネットオプション]−[全般]−[インターネット一時ファイル]−[設定]−[インターネット一時ファイルのフォルダ]あたりで、自分の環境の設定を確認しておいた方が無難かも。

このコマンドを実行すると、検索インデックスの生成処理が始まるわけだけど、初回はかなり時間がかかる。キャッシュファイルが多ければ多いほど時間がかかるんで、最初はいったん[インターネット一時ファイルの削除]を使って、キャッシュファイルを削除しておいた方がいいかも。2回目以降は、差分(更新されたファイルのみ)処理が行われるので、そんなに時間はかからない(まあ更新されたファイルがどれだけ多いかによるけど)。

2回目以降の検索インデックス生成を行った場合は、以下のコマンドを実行することで、不要なインデックスファイルのデータを破棄することができる。まあこれはやってもやらなくてもどっちでもいい。

c:\estraier\estindex purge casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"

続いて、Estraierの関連ドキュメント検索(あるドキュメントと似たドキュメントを検索する)機能用インデックスも作成する。ただしこれは関連ドキュメント検索機能を使わないならば実行しなくてもいい。けど、やっておくとおもしろいから実行しておいた方がいい。

c:\estraier\estindex relate casket

これで検索インデックスの準備は完成。で、この検索インデックスを使って検索を行う方法は複数通り用意されている。

  • 適当なWebサーバーをローカルで動かして、estsearch.cgiを動かす方法。
  • estxviewコマンドでXML形式の結果を取得し、それをパースしてそれなりの結果UIを得る方法。
  • estserverで専用検索用サーバーを動かす方法。

ここでは一番手軽な3番目の方法を使ってみる。

※あらかじめc:\estraier\locale\ja以下のファイルをc:\estraierにコピーしておくと、説明等が日本語になる。

まず、c:\estraier\estsearch.confファイルを開き、16行目あたりにある

prefix: ./

ってのを、

prefix: file://

に変更して保存する。この作業は1回だけやればいい。これによって、検索結果画面からのリンクがきちんとキャッシュファイルに張られるようになる。

あとは、専用検索サーバーを起動する。

c:\estraier\estserver -port 8080

上記はポート8080でサーバーを動かす際の設定。ほかにWebサーバーをローカルで動かすつもりがないならば、80ポートで動かしておくとブラウザからアクセスするときにいちいちポートを指定する必要がなくなる。ともかく自分のマシン上の他のサービスとバッティングしないポートを指定すればいい。

すると、サーバーが立ち上がり、コマンドプロンプトの画面が表示される。特にその画面は使わないんで最小化して放置しておこう。

さて、実際に検索を実行してみる。ブラウザから

http://localhost:8080/

にアクセスしてみると、なにやらファイル一覧が表示されるはず。そこでファイル一覧が表示されないようだと、ちゃんとサーバーが動いていない可能性がある。別のポートに変えてみたり、あるいはファイアーウォールソフトの設定なんかをいじってみるといいかも。

右上のSearchをクリックすると検索フォームに移動する。そこから先はふつうのWeb検索フォームと同じ使い勝手。Estraierはデフォルトでいろいろ高機能なんで、ふつうに検索しているだけでも結構遊べる。

estserverはCTRL+Cで終了しようとしても、複数プロセスがなかなか全部終了してくれなかったりする。あと、estserverは起動時の検索インデックスを見ているみたいなんで、検索インデックスを生成し直したときにはestserverを立ち上げ直す必要がある。なんてところがあるんで、このままだと微妙に使いづらい。ほどよいラッパーツールを作ればその辺解決できそうなんで、誰か作ってくださいな。あとIE以外のブラウザのキャッシュでも似たようなことができそうだけど、自分では未調査。

c:\estraier\autoest.batとかに、

c:\estraier\estindex purge casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"
c:\estraier\estindex register casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"
c:\estraier\estindex relate casket
c:\estraier\estserver -port 8080

とかを列挙しておいて、インデックス更新+サーバー起動をまとめてできるようにしておくといいかもね。

Published At2004-06-17 00:00Updated At2004-06-17 00:00

日記
blogmap検索インデックス更新再開 (13:51)Edit

bdflushをかなり大きめに設定したらインデックス更新負荷が減って、何とか現在のドキュメント規模(blog検索が13854文書/648797単語、ニュース検索が8679文書/310191単語)のインデックス更新をそれなりの負荷(表向けのhttpdプロセスと、裏のblogmap/textmaniaのデータ収集・集計プロセスを、最大負荷時でも止めない程度)で実行できるようになった模様。bdflushを大きくするデメリットってのは、それなりに安定運用していて、クリティカルなデータを扱っていないサーバーではほとんどなさそうだ。オンメモリで処理しなければならないデータの最大サイズをちょっとだけ意識しておけば(その分までディスクバッファが食わなければ)それでいいんじゃないかな。問題が出るようならまた調整するってことで。

Published At2004-06-18 00:00Updated At2004-06-18 00:00

日記
自分の見たWebページを全文検索する 2 (13:51)Edit

昨日「自分の見たWebページを全文検索するhttp://mylog.ishinao.net/id/1242)」で、Estraierを使ってIEキャッシュを全文検索するってネタを書いたけど、実際のところ、私自身は似たような用途のための別のシステムをすでに持っている。ってのは、実はblogmapのNews検索とクリッピングサービスのこと。

blogmapクリッピングサービスでクリッピングされたURLは、自動的にblogmapのNews検索のインデクシング対象に追加される。blogmapのNews検索は、Webで話題になっている(blogmapで複数ポイントを集めた)URL+クリッピングサービスで手動クリップされたURLに対して全文検索を行うようにしてある。

つまり実際のところ、blogmapのニュース検索ってのは俺が興味を持った範囲に特化したWeb系ドキュメント検索ツールであり、クリッピングサービスってのはそこへ検索対象ドキュメントを追加するためのインターフェースだったりするわけだ。

というわけなんで、利用者が少ない(割にトラブルが多い)クリッピングサービスと検索サービスをがんばって稼働させ続けているのは、実はこのシステムってのは、限りなく自分用の検索ツールを一般向けのふりをして公開しているから、だったりする。

ただ、こういうやり方だとサーバーを持っている人しか実現できないけれども、この間のIEキャッシュを使った全文検索のアプローチと組み合わせるともっと便利なシステムが作れそうだ。

基本的には、ローカルディスクに興味をもったWebドキュメントをクリッピング(紙2001でいうところの「ページ全体を紙に取り込む」)していく。インターフェースとしては、blogmapクリッピングサービスと同様に、右クリックメニュー拡張からクリッピングするパターンが一つ。あと、できればブラウザに「録画」ボタンを組み込んで、録画ボタンがオンの間に閲覧された履歴はすべて自動的にクリッピングされる仕組みを持つと便利そう。

ただ、クリッピング処理の実装をリアルタイムにHTTP GETするようにしてしまうと、たぶん処理が重くて使うのがたるくなりそうなんで、非同期にIEキャッシュからコピーする方針にする。具体的には、リアルタイムではURL文字列だけを記録しておき、システムIdle時にIEキャッシュからURLから得られるキャッシュファイルをコピーするイメージ。

クリッピングされたWebドキュメントは、指定されたディレクトリ以下にHTML形式で保存されていく。あとは、適当なタイミングで検索インデックスを更新すればいい。これもIdle時に更新されたドキュメント数とか更新間隔とかをチェックして、非同期で処理すればいいだろう。検索処理自体は、Webインターフェースを使ってもいいし、専用のツールごしに(Estraierを使うならばestxview用のフロントエンドツールを作って)行ってもいい。

こういうツールってちょっとまじめにほしいかもと思って、Sleipnirのプラグインとして録画ツールを作れないかと調べてみたんだけど、Sleipnirのプラグイン関連の情報って少ないなー。IEのツールバー拡張だったら作れそうだけど、素のIEなんて仕事でしか使わなしなー。自分でタブブラウザを作るのは今更面倒くさいし。Sleipnirとかが標準で録画機能を組み込んでくれないかなー。

Published At2004-06-18 00:00Updated At2004-06-18 00:00

日記
Bind9とchroot (13:51)Edit

Bind9(のFedoraCore1のRPMパッケージ)はデフォルトでchrootするようになっているんだね。んでもって、設定ファイルはchrootの中のほうを変えなきゃだめなんだね。しばらく気づかなかったよ。あとなにやら認証キーみたいな要素も追加されているみたいだけど、まだ未調査。

Published At2004-06-18 00:00Updated At2004-06-18 00:00

日記
眠いぞコンチクショー (13:51)Edit

でも琢磨よくやった。最後までとても強い走りだったし、最近滅多に見られないコース上の追い抜きがたくさん見られて幸せだった。っつーか、琢磨があれだけ無理してでも追い抜かないと、あのままじゃ下位に沈んで終わっちゃったよな。BARの関係者なんとかしてくれ。たぶんあのタイミングでピットに入れた場合、どれだけ燃料を入れるのがいいのかを計算できなかったんだろうけど、そんなのあらかじめ自チームの車の燃料積載量&今後のスケジュール&イレギュラー時の作戦パターンをリアルタイムで計算するようなプログラムを作っておけばそれでだいたいすみそうじゃん。他チームの作戦との兼ね合いまで計算するとなると結構難しそうだけど。

Published At2004-06-21 00:00Updated At2004-06-21 00:00

日記
blogmap - この話題に関連したページ (13:51)Edit

blogmapに「この話題に関連したページ」機能を追加してみました。要は、ある話題のページについて、似たような話題(キーワード)をあつかったページを類似度順に一覧表示する機能です。URLランキングの[もっと詳しく]から表示することができます。

中身的には、Estraierの関連ドキュメント検索機能を使ってます。クロールした全文に対して日次でインデックスを生成しているんで、出てくるタイミングにはちょっとタイムラグがあったりします。

Estraierの応用実験のためになんとなく作ってみただけなんだけど、実は結構有用な機能かもしれない。どうせなら、blog検索とも連動させてみようかなー。

ちなみにこの間Estraierが1.2.13にアップデートされ、インデックス生成処理がものすごく高速化されたんで、最近まで苦しんでいた検索インデックス生成時の不安定な挙動がずいぶん解消されたっぽい。今日の分の実行ログを見た限りでは、インデックス生成にかかる時間が半分以下になった模様。

Published At2004-06-22 00:00Updated At2004-06-22 00:00

日記
blogmap - この話題に関連したページ (2) (13:51)Edit

blogmap側で関連検索インターフェースを持ったついでに、news検索機能も素のEstraierを使うのをやめて、自前のインターフェースに取り込んだ。そうしないと、news検索から関連ページに自然につながらないんで。

これで、適当なキーワードで検索をかけて、そこで見つかったページのさらに関連ページをたどって……、というアプローチが可能になる。

Published At2004-06-22 00:00Updated At2004-06-22 00:00

日記
blogmap - この話題に関連したページ (3) (13:51)Edit

メディアの方も、AmazonのSimilarSearchを使って、関連したメディア機能を追加した。けど、こっちはAmazon Web Serviceごしに結構な量のデータを持ってくるんで、キャッシュが効いていないとげろ遅い。まあでも最近Yahoo! Slurpさんがばりばり回っているんで、やつが主立ったキャッシュの更新作業を受け持ってくれるでしょう。

Published At2004-06-23 00:00Updated At2004-06-23 00:00

日記
尿管結石? (13:51)Edit

初救急車しちゃいましたよ。

15時頃会社で仕事していたら突然左の脇腹が痛くなり、椅子に座っていられなくなった。床に横になったんだけど、全然痛みがやむ気配はない。いろいろ体勢を変えてみても痛みが減らなかったんで、あきらめて病院に行くことを決意。

けど痛みで脳みそがろくに働かず、Googleに「病院」とだけ入れて検索してみたり(せめて地域とかジャンルとかも入れろよ)しちゃったんで、自分で考えるのはあきらめて会社の人に手近な病院を紹介してもらう。が、歩いて病院に行けそうもなくなってきたんで、救急車カモン。

痛みで冷や汗が出て手がふるえて来た頃に救急車到着。症状とか個人情報とかいろいろ聞かれたあとに、担架到着。建物が狭いんで座る担架(なんてのもあるんだね)。けど、そんなのに座って運ばれるよりもエレベータで自分で下りた方が楽そうだったんで、そろそろとエレベータで1階まで下りて、そこでストレッチャーにごろん。

せっかくの初救急車なのに痛くてあんまり周りを見物している余裕はなかった。車内で住所とかいろいろ聞かれたのは意識確認を兼ねているんだろうか。

結構すぐに救急車は病院に到着し、ちょっとだけ問診と触診を受けて、尿管結石の疑いがあるということで検尿。尿に血が混じっていたんでやはり尿管結石の可能性が高いでしょうと泌尿器科へ。

痛みはそのころにピークに達していて病院のベッドの上で少しでも痛みがない姿勢を探しつづける。で、痛い方の左脇を下にして横になっている体勢が一番痛みが少ないことに気づいて、しばらくその体勢をキープしていたらいつの間にか痛みがほとんどなくなっていた。

その後泌尿器科の医師の診察。音波検診みたいなのをやっていたっぽい。で、翌日レントゲンを撮るということになり、痛み止めの座薬の処方箋をもらっていったん終了。

そのころには痛みもほとんどなかったんで、とっとと帰ろうと処方箋薬局に行き、薬を待っている間に再び痛みがやってきた。うげ、前と変わらないくらいの痛みでやんの。これはちょっと帰るどころではないかも。ということで再び病院に。

早速痛み止めの座薬を使い、ベッドを貸してもらって痛みが治まるのを待つ。30分くらいでだいたい治まったんだけど、この調子だと明日この病院までやってくるのが厳しそうなんで、紹介状を書いてもらって家の近くの病院に行くことにする。で紹介状をもらってタクシーで会社に戻り、荷物を持って電車で帰宅。念のため会社の人にもより駅まで付き添ってもらったけど、幸い移動中は痛みがぶり返すことはなかった。

で、今家に帰って3時間ほどたったわけだけど、ほんの数分だけ痛みがぶり返しかけた以外は、今のところほとんど大丈夫。ただ、ちょっとでも左脇に振動を与えるといやな兆候が始まるんで、移動はおそるおそる状態。

まだ確定じゃないけど、尿管結石だったとしたら単に痛いだけの話っぽいんで、ひとまず一安心。ただ、ろくな治療法がないんじゃないかとちと不安。もしかして痛いのは我慢しながら、そのうち石が出てくるのを待ちましょうってだけの治療じゃあるまいな。

Published At2004-06-23 00:00Updated At2004-06-23 00:00

日記
尿管結石 (2) (13:51)Edit

昨日最寄りの病院に行って(3時間以上待たされつつ)レントゲンと音波エコーをとってきたんだけど、それらしい影は見つからず。腎臓も腫れていないとか。

ただ、症状的にはどう見ても結石だろうということで、来週もう一度血液に造影剤を入れてから、レントゲンを撮ることになった。腎臓からの尿管の流れを追って、詰まっているところを探すんだとか。その準備のために二日前から下剤とかいろいろ薬を飲まなきゃいけないらしい。面倒だな。

ちなみに今のところ、安静にしていればほとんど痛みはない。左脇腹あたりに直接振動を加えると微妙にいたくなる(車とかに座っていて、下から突き上げるような振動が加わったときが顕著)けど、まあ単に痛いだけだとわかれば(原因がわかってしまえば)なんぼでも我慢できるよな。

Published At2004-06-25 00:00Updated At2004-06-25 00:00