Mar 04, 2005
[Ajax] 2chスレッド最速検索復活しました
しばらく放ったらかしにしていましたが、コード整形と、少し視覚化周りで手を加えてみました。http://x.ma.la/
スクリーンショットはこんな具合。
http://la.ma.la/misc/2chfind_2nd.png
検索状態を復元できるようにしてみました。
スクリーンショットのセッション復元
IE6とfirefoxとopera8で動作確認をしてます。例によってCPUが遅いと厳しいかもしれません。
検索は完全ローカルで行われるので、いったんロードが完了すればいくら検索してもサーバーに負担はかかりません。
オフラインにしても検索できます。
どんな単語で検索されているのかは、サーバーもプロバイダもわかりません。
板移転時の、自動追尾処理なんかが面倒くさくて、実装できてません。
なので、いきなり動かなくなったりするかもしれません。
----
使い方
-板を検索後、板名をクリックすると検索対象に加えます。
-板が一つに絞り込まれた場合は勝手にロードします。
-板名の入力欄はスペースで区切って「板検索文字 スレッド検索文字」とすることができます。
-ひらがなで検索ができます。ただし正確にふりがなが振られているとは限らないのでヒットしない場合があります。
-ハイライト箇所はいい加減です。ふりがなにマッチした場合、どこにマッチしたのか正確にわからないので。
----
仕組みは、サーバー側でsubject.txtを取得、kakasiでふりがな付加した状態のファイルを作成。
XMLHTTPを使って非同期読み込み、JavaScriptでオブジェクトに変換、といった具合です。
同時に複数の板をロードするようにした場合、複数のコネクションを張って、リクエストが完了した順に読み込まれます。
フレームを使うよりも圧倒的に簡単に実装できるので、非常に便利です。
今までのはフレーム使ってやっていたので、全然Ajaxじゃないです。xがないです。
オブジェクト指向な書き方が最近になってようやくわかってきたので、ソースも一応、参考ぐらいにはなるかもしれません。
JavaScriptを使った検索は、ある程度のCPUを使っていれば一瞬で終わります。
ボトルネックになるのは描画処理のほうなので、変更がない場合は画面に書き出さない、
横断検索の場合は表示件数を減らす、などして高速化しています。
むかし、こんなのを作ってたのですが、
http://x.ma.la/demo/mekuri.html
文字コードの変換に必要なADODB.Streamオブジェクトが
WindowsUpdateで無効化されてしまい、使えなくなってしまいました。
色々と改善の余地はあるのですが、他にやりたいことが色々あり、
手を加える暇がないというか、時間をとられたくないので、あまりできません。
最近は興味のある人も多そうなのでサーバー側CGIと、クライアント側のJavaScript、全部まとめてオープンソースにしようかと思ってます。
Edit this entry...
wikieditish message: Ready to edit this entry.
A quick preview will be rendered here when you click "Preview" button.