Home

日記
似た話題の日プラグイン (15:52)Edit

Estraierの類似文書検索機能を使って、似た話題の日を表示するプラグインを作ってみた。でもRubyをよくわかっていないんで、日付を引数に呼ぶと結果HTMLを返すスクリプトをPHPで書いて、

add_body_enter_proc do |date|
$cmd = "/path/to/php/script/"
`#{$cmd} #{date.strftime('%Y-%m-%d')}`
end

というグレイトな内容なんでまだ公開しない。Rubyの勉強してRubyにポーティングできたら公開しますよ。でもtDiary+Estraierなんか使っている人ってほとんどいないだろうけど。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
キーワードプラグインの設定 (16:16)Edit

キーワードプラグインの検索先として、デフォルトでEstraier検索を呼び出すように変更。これで従来通りEstraierとかBracketName化するだけで、関連ドキュメント一覧をたどることができるようになるな。ただWikiLikeの場合は、検索される側でも同じキーワードをBracketName化しておかなければならなかったんだけど、こっちではEstraierの形態素解析依存になる。

ちなみにWikiLikeのときに、検索されるドキュメントの側でも意識してキーワード化しないと検索されないようにしていたのは、誤爆検索を回避する(たまたま同じ文字列を使っていても、そのドキュメントにおいてそのキーワードに特に意味がない場合は、キーワード化しないことによって検索されないようにする)ためだった。

けど、しばらく使ってみた感想として、

  • ドキュメント作成時に、そのドキュメントのキーワードを指定するのは(いくらBracketName化するだけとはいえ)面倒くさい
  • また、そのドキュメントにおいて意味があるキーワードかどうかを判断することも難しい
  • はっきりいって、誤爆だろうがなんだろうがひとまず結果一覧に一通り表示して、人間がそれぞれに意味があるかどうかを判断した方が実用上は便利だ

なんて感じだったんで、結局ごくふつうの形態素解析による全文検索インデックスを使った検索機能でOKという結論になってしまった。

ただWikiLikeの機能を活かして、

  • 明示的にBracketName化することによって、キーワードの重要度を上げることができる
  • 明示的に検索インデックスから特定のキーワードを排除する書式を用意する
  • 本文中に含まれないキーワードを検索インデックスに追加することができる(これはメタキーワードとかを使えば実現できそうだな)

あたりはサポートしたいな。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
セクションごとの投稿時間 (2) (16:39)Edit

(インポートしたりとかキャッシュを破棄したりとかした)古いデータがレンダリングされるときにも、見出しにレンダリング時点での時刻情報が付加されてしまうことを回避したバージョン。

        when /^\![^!]/
@sections << WikiSection::new( section, author ) if section
-         section = l
+         if (@date.strftime('%Y-%m-%d') == Time.now.strftime('%Y-%m-%d') &&
+           !l[/\([0-9]{2}:[0-9]{2}\)/]
+           section = l.chomp() + ' (' + Time.now.strftime('%H:%M') + ')' + "\n"
+         else
+           section = l
+         end
else
section = '' unless section
section << l

要は、当日の日記分以外の場合は、時刻を付与しないようにした。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
更新時にEstraierのインデックスを更新 (16:50)Edit

インデックス更新スクリプトを用意しておいて、

add_update_proc do
if /^(append|replace)$/ =~ @mode then
$cmd = "/path/to/update/script >/dev/null &"
system($cmd)
end
end

とかやればいいのかな? @modeの判別の意味がよくわからないんで、サンプルそのまま。ソース読まずに勘で言うと、たぶん上記判別でプレビュー時には駆動しないようにしているに80ガバス。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
申し込みでこけてた (18:14)Edit

先々週に申し込んだ追加サーバー。いつまで経ってもその後の連絡がこないんで問い合わせてみたら、最初は「ちゃんと申し込まれていて、現在入金待ちステータスです」と言っていたんだけど、「カード決済で入金待ちなんてあるのか」とつっこんだら、「調べてみたら決済でこけていたんで、もう一度申し込みし直してください」ということになった。前回はWebではOK画面が出たんだけどその後のメールとかはこなかったのが、今回はちゃんとOKメールも来たんで今度はちゃんと申し込めたっぽい。インフラ周りは悪くないと思うけど、それ以外のところももうちょいがんばれ、さくらインターネット。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
デスクトップ検索ツール (20:03)Edit

あれ、この市場ってそんなに熱かったのか。先を越されてモチベーションが下がる前に、作りかけで放置していたEstraierのWindowsクライアントをとっとと完成させておくべきかな。動作テスト用のプロトタイプはずいぶん前に完成したんだけど、Windows環境でOffice文書がうまく登録できなかったんで、そのまま放置しちゃったんだよな。

自分で作らなくても誰かが作ってくれればそれでいいんで、外部仕様だけ書いておくと、

  • 基本はWindows用常駐ツール
  • エクスプローラから、フォルダ・ファイル(パターンもあり)をEstraierの検索対象として登録することができる
  • ツールは、Estraierの検索対象となったフォルダ・ファイルの更新状況を監視している
  • フォルダ・ファイルに変更があった場合は、それらを次回インデックス更新対象として登録する
  • System Idleとか指定時間起動とかで、適切にEstraierのインデックスに更新をかける
  • インデックスは複数用意でき、どのフォルダがどのインデックスに対応するか等指定できる
  • あとはポップアップ等で起動する、Estraierの検索クライアント機能。検索窓にキーワードを入力すると、指定されたインデックス(複数可能)に対して検索をかけ、その結果を表示する。関連文書検索等もそのまま使える。

といった感じ。VB.NET+SQLite(UTF-8コンパイル版)で作っているけれども、estxviewの吐くXMLをパースできて、WindowsのUIが作れるならば、作るのはそんなに難しくないと思う。

あとは、

  • メールをプレーンテキストのままにファイルシステム上に保存するメールクライアント(fetchmailみたいなののWin32版ってあるのかな)
  • ブラウザの履歴を録画(保存)することができるツール(録画ボタンを押すと、それ以降閲覧したページがすべてローカルに保存され、検索対象となる。録画停止で止まる)

あたりを用意すると、Web+メールに対してローカルで気軽に高度な全文検索ができるシステムが完成する。という予定。

ブラウザ履歴に関しては、IEのキャッシュから該当URLのファイルを取り出すサンプルは作ってみたんで、あとはどうやって録画状態中のURL履歴を保持するかだな。専用ブラウザを作れば簡単なんだけど、それはさすがに面倒だしな。80ポート宛のリクエストを監視するとか? さすがにそれもなー。

SQLiteの用途

これだけだとSQLiteを何に使っているかわからないんで補足。SQLiteは、全文検索ではない検索インデックスとして使う。要は、

  • ファイル名
  • 拡張子(ファイル種別)
  • ファイル作成日時
  • ファイル更新日時
  • 該当ファイルごとのプロパティ
    • たとえばHTMLファイルならば、URL、タイトルとか
    • メールだったら、Subject、From、To、Dateとか

なんてあたり。Estraierを使って全文検索・類似文書検索などの曖昧度の高い検索を行い、SQLiteで基本的な検索やソートを行う感じ。

本当は検索ツールを別アプリにするのではなく、Explorerに埋め込んで表示できたりするとよりスマートなんだろうけど、どうもWindowsのShell周りって面倒くさそうなんで、あんまり手を出したくないんだよなー。

これだとWebとメール専用みたいだ

もちろんそんなことはなく、仕事用のフォルダとか資料用のフォルダとかを検索対象に入れておけば、そこもこのシステムから検索できるし、フォルダにファイルを追加したり更新したりすると、自動的にそのファイルも検索対象になる。どうせならば高林さん(http://namazu.org/~satoru/diary/)が作るらしい、ソースコード用検索システム(http://www.ipa.go.jp/jinzai/esp/2004mito1/gaiyou/2-23.html)の機能も取り込んで、ソース資産に対する検索も透過的にできるといいだろうなー。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
trackback受信できてなかった (22:26)Edit

単にインストールして関連プラグインを有効にしただけじゃだめなのね。tb.rbをWeb公開ディレクトリにコピーして、実行権限をつけてやる必要があるのか。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
サイドバー (23:37)Edit

自分でヘッダ・フッタに<div class="main"></div>とか<div class="sidebar"></div>とか書いて使うものなのね。てっきり、どれかのテーマを選ぶと自動的に有効になるんだと思っていたよ。

Published At2004-08-05 00:00Updated At2004-08-05 00:00

日記
RSS (00:10)Edit

makerssで作成されるRSSって日付逆順じゃなくて、更新されたもの順なんだね。インポートしたデータを修正したりすると、そいつらがあがって来ちゃってじゃまくさいなー。

Published At2004-08-06 00:00Updated At2004-08-06 00:00

日記
トヨタに衝撃! ゾンタがレギュラー昇格へ (01:18)Edit

あらびつくり。まあトヨタなんてどうでもいいんだけどさ。

Published At2004-08-06 00:00Updated At2004-08-06 00:00