OpenSearchのxmlファイルにはGoogleやAmazonのようにsuggestをするための記述を書くことができる。そのURLにアクセスするとJSON形式で結果が返り、サジェストされるというもの。FirefoxでURLの右側にある検索窓に何か打ち込んでいると候補が出てくるアレです。 こんにちでは、いろいろなサイトがsuggestの機能に対応している。代表的なものは以下の通り。
| http://suggestqueries.google.com/complete/search?client=firefox&hl=ja&qu={searchTerms} | |
|---|---|
| Goo | http://search.goo.ne.jp/suggest.jsp?fm=json&ie={inputEncoding}&MT={searchTerms} |
| Wikipedia(ja) | http://ja.wikipedia.org/w/api.php?action=opensearch&search={searchTerms} |
| Amazon | http://completion.amazon.co.jp/search/complete?method=completion&search-alias=aps&mkt=6&q={searchTerms} |
| Yahoo(JP) | http://api.search.yahoo.co.jp/AssistSearchService/V2/webassistSearch?output=fxjson&ei={inputEncoding}&p={searchTerms} |
| NAVER | http://ac.naver.jp/ac?r_format=opensearch&q_enc={inputEncoding}&r_enc={outputEncoding}&q={searchTerms} |
| Yahoo! Transit(駅名) | http://transit.map.yahoo.co.jp/suggest/search.php?q={searchTerms} |
Yahoo! Transitの駅名はJSONではなくてSpace-separeted textですね。 GoogleやAmazonのAPIにアクセスするようにOpenSearchのXMLファイルを書いてもいいけど、自前で用意するにはどうしたらいいのか。 自分のエントリを形態素解析して単語を抜き出し、検索すればいいんじゃないかな。あんまり高度なアルゴリズムは必要ないだろう。 というわけで、やってみた。 うちのサーバはCentOS5系なので、まずは関連するファイルのインストール。 HTMLのパースに使うlxml、DBの操作に使うSQLObjectはEPELから入る。



