エントリー動的検索

2005/03/05 Sat 02:16

ブームに乗って、動的検索を作ってみました。ほとんど「Ajax を使った郵便番号検索」経由「Guide to Using XMLHttpRequest (with Baby Steps)」をそのまま流用させていただきました。キーワードをスペースで区切って複数入力したりは、もちろん(!)できません(スペースも含めて一つのパターンとして扱われます)。

かつてこのエントリーで公開していた検索フォームは、現在単独ページに移動しています。(2008年7月)

まずエントリーを探してきてXMLとして出力するCGI(Perl)を作り、それをJavaScriptで取りに行って検索しています。マッチングもクライアント側で行っているので、エントリーのメタデータ(XML)自体は固定ファイルでもかまわないわけですが、ひとまずPerlで動的に作り出しています(将来的にはwikieditish.cgiに静的生成を組み込む方向で)。

ただし、FireFoxから検索しようとするとエントリータイトルにエンティティが入っているエントリーをうまく処理できないらしく、エラーが出てしまったので、現在はタイトルにエンティティを含むエントリーが無いnewsカテゴリだけを対象にしています。全エントリーを対象とした場合でもIEからは検索できましたが、とりあえず保留。

FireFoxのエラーに対応するため自前のDTDまで作ってみたんですが、それでもエンティティが解決されないようで、かなりあやしい。とはいえDTDの書式あたりはまったく自信がないので、誰が悪いのかよくわかりません。これ以上の対応については勉強してからということで。

インターフェースをGoogle Suggestっぽくすることは考えてます。

参考・関連リンク
Guide to Using XMLHttpRequest (with Baby Steps)
Ajax を使った郵便番号検索
Dynamic HTML and XML: The XMLHttpRequest Object (Apple Developer Connection)
最速インターフェース研究会
Ajax: Web アプリケーション開発の新しいアプローチ
Google Suggest

追記(5/16):XML生成時にエンティティをASCII文字に変換するよう変更。検索対象を全カテゴリに拡大しました。

Posted at 02:16 | Diary | 0 writebacks | edit
Tagged as: ,

writebacks

trackback URI

http://cu39.s57.xrea.com/diary/20050305_dynamicsearch.trackback


SPAM ロボットを排除するため文字判読テストをお願いしています。画像に書いてある2つの単語を入力してください。単語の間には半角スペースを入れます。