エントリー動的検索
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文字に変換するよう変更。検索対象を全カテゴリに拡大しました。