最近、Twitterで頻出するとある単語(英語で言えば「of」みたいな)を検索して見ています。その中で気づいたことを中心に、Twitter検索の仕組みについて想像してみたことなどをまとめてみました。
誤りや、別の考え方や、解決方法などがある方はコメント欄やご自身のブログからのトラックバックなどでぜひお聞かせください。
Twitter Search API の制限
- TwitterのSearch API ではひとつの検索キーワードで継続検索した場合、5分あたり600件(1分あたり平均120件前後)ぶんの結果しか返さない
- このAPIでの検索の上限は、検索元(IPアドレス)が別々であっても結局トータルで上記件数を超えることはない(別々のIPアドレスから検索してそれらの結果を合わせてみても、1分あたり120件前後という天井が存在する)
- Web画面での検索ではこれを越える結果が返される(ただし件数のみなので実際の中身は不明。体感的には発言内容を全部参照できないように感じている。「もっと」の処理が重すぎてしっかりと確認はできず)
- Web画面での検索では、珍しい言葉(だけどそれなりに発言されている)で検索すると最初は古い結果しか帰ってこない。20秒経過後にばらばらと出てくる。・・・という結果を以前得たのですが、今このエントリを書きながら試したら再現しない。いい単語に当たらないせいか勘違いだったのか。。。
推測:Twitterの検索のしくみ
その他、ここで書かなかった細かい確認作業の結果などを通して、以下のようなしくみを推測してみました。どうでしょう。
- 最近必要とされる検索語を格納している領域があるのではないか。ここは数十秒間(または数分間)その語での検索リクエストがないと消えていくようなもの。
- それとは別に検索結果を返すためのバッファのようなものがある。
- このバッファはひとつの検索語に対して5分あたり600件しか入らないような仕掛けがしてある(上限を超えたらぱたっと止まるのではなく程よく分布はしているようなので、結構な工夫はしてあるようです)
- ツイート時に検索語格納エリアを確認し、検索語となっているものは通常の保管領域の他に検索結果バッファにも追加される
- 検索リクエストに対しては基本的にこの検索結果バッファにあるものから返す(だから異なるIPアドレスから検索を実施しても同じ結果しか得られない)
ということでコンテストの提案?
実は私が今Twitter検索で調査している事は発言取得の網羅性を目指したものではないので、「程よくピックアップされたものが取得できる」という現状でまったく困っていないのですが、ここで技術屋的「くやしさ」がむくむくと頭を持ち上げて来ました。
「取得できない? そんなら取得してやろうじゃないか!」
ということで、ひとりでやっていてもつまらないので、一緒にやりませんか。コンテストと言っても別に賞品や金メダルが出るわけでもありませんが、その代わりに「うゎぁぁ、すごいなぁぁ」という賞賛は得られるでしょう。「なにそれずるい」という最高のホメ言葉になるかもしれませんが(笑)。
ルールとしては以下のものでどうでしょう。
- Twitter で「of」を含む単語を検索、結果を取得する
- 連続する5分間の取得数で競う。各分ごとに取得数になるべく大きな波のないように。
- 使用環境は自由。APIを使っても使わなくても。複数IP使っても複数アカウント使っても。ただし「全ストリーミング」での取得は勝って当然なのでなしにしましょう:-)
- 補足情報
- "of" は、時間帯にも依りますが概ね1分あたり1000を越えるペースでツイートされています
- 現状(私が理解している)上限は 1分あたり120~130ツイートです(Search API 使用時)。これを大幅に越えることが目標
私もこれがメインじゃないので没頭するわけにもいかないのですが、しばらく挑戦してみようと思います。いろいろ情報交換しましょう。