twitter4j ライブラリを使用して、パブリック twitter ストリームにアクセスしています。ジオタグ付きのツイートを含むプロジェクトを作成しようとしていますが、テストのために多数のツイートを収集する必要があります。
現在、フィルター処理されていないストリームを Twitter から取得し、ジオタグ付きのツイートのみを保存しています。ただし、大部分のツイートにはジオタグがないため、これは低速です。Twitter ストリームで、ジオタグ付きのツイートのみを送信してもらいたいです。
サイズ 360* x 180* のバウンディング ボックスでフィルタリングするこの質問に記載されている方法を使用してみましたが、うまくいきません。そのフィルターを使用してもエラーは発生しませんが、ジオタグのないツイートの 99% を取得しています. これが私がやっている方法です:
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("censored")
.setOAuthConsumerSecret("censored")
.setOAuthAccessToken("censored")
.setOAuthAccessTokenSecret("censored");
TwitterStream twitterStream = newTwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new MyStatusListener();
twitterStream.addListener(listener);
//add location filter for what I hope is the whole planet. Just trying to limit
//results to only things that are geotagged
FilterQuery locationFilter = new FilterQuery();
double[][] locations = {{-180.0d,-90.0d},{180.0d,90.0d}};
locationFilter.locations(locations);
twitterStream.filter(locationFilter);
twitterStream.sample();
ジオタグのないツイートがまだある理由について何か提案はありますか?
編集: Twitter ストリームへのフィルターの追加に関するtwitter4j javadocを読み直したところ、「デフォルトのアクセス レベルでは、最大 200 のトラック キーワード、400 のフォロー ユーザー ID、および 10 の 1 度のロケーション ボックスが許可されます」と書かれています。では、バウンディング ボックスの幅は 1 度しかないのでしょうか? それは私が見つけた元の情報とは異なります。それは私の問題ですか?フィルタ リクエストが大きすぎるため無視されますか? 使用しようとしてもエラーは発生しません。