http://twitter.1x1.jp/search/
こういうTwitter検索ってどうやって実現しているのでしょうか?(実現していると思われますか?)
Twitterでは検索APIは提供していませんし、検索エンジンの提供している検索APIでsite:twitter.comで検索しているのかと思いきや、発言が一瞬で反映されるので検索エンジンのAPIではなさそうです。
public timelineをcronか何かでガシガシ取得しているのかというのも考えましたが、やはり発言が1秒かからずに検索に反映されているところを見ると、それも違いそうです。(1秒間に何十件も投稿されているのでF5アタックのようなアクセスが必要ですし、そんなのを繰り返していたらAPI利用停止されそうです)
さっぱり検討がつきません。
「こんな感じじゃないの?」というアバウトな回答でもかまいませんので、どなたか可能性のありそうな方法がありましたら教えて下さい。
CakePHPを、
使って実現してるようですね。
Rate Limiting
Clients are allowed 70 requests per 60 sixty minute time period, starting from their first request. This is enough to make just over one request per minute, per hour, which should meet the needs of most applications. Rate limiting applies only to authenticated API requests; requests for the public timeline do not count. POST requests (ex: updating status, sending a direct message) also do not count against the rate limit.
とあるように public timeline へのリクエストについてはAPI回数の上限がありません。
ガシガシ取得してもAPI利用停止はされないはずです。
http://twitter.com/statuses/public_timeline.json
といった感じでJSONあたりで情報を取得している可能性はあります。
理論上は、すごく短い間隔で since_id を指定しながら public timeline の情報を取得すれば良いはずです。
(ただ、public timeline で取得できる情報は20件までなので、どのくらいの頻度で情報を取得すれば良いのかはよく分かりません…。)
JSONで渡ってくる情報はだいたい 10数KB 程度です。
1秒間隔ぐらいで秒間に何度も取得した public timeline の情報を合わせて、日本語情報のみ抽出(textの内容をチェック?)してページを生成すればいけそうな気がしないでもないです。
(検索のリクエストがない限り、JSONで情報を取ってきたままの状態にしておいても良いわけですし。)
回答にはなっていませんが、少しでも参考になれば幸いです。
(自分で書いていて、トンデモ回答な気がしてきました…orz)
うーん、やっぱりpublic_timelineなんですかねえ…
CakePHPにはTwitterの過去ログを検索する機能は無いのですが…