我正在尝试创建一个从twitter搜索查询的程序。我遇到的问题是API只返回100个结果查询,当我尝试检索更多时,它会再次给我相同的结果。
User user = twitter.showUser("johnny");
Query query = new Query("football");
query.setCount(100);
query.lang("en");
int i=0;
try {
QueryResult result = twitter.search(query);
for(int z = 0;z<2;z++){
for( Status status : result.getTweets()){
System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText());
i++;
}
}
该程序将打印200个与查询“足球”相关的结果,但不是给我200个不同的结果,而是两次打印100个结果。我的最终结果应该是我可以打印与速率限制允许的不同结果。我已经看到针对特定用户返回100多个响应的程序,但我还没有看到可以为“足球”等唯一查询返回超过100个响应的内容。
答案 0 :(得分:1)
要在搜索查询中获得超过100个结果,您需要调用查询的下一次迭代。
Query query = new Query("football");
QueryResult result;
int Count=0;
do {
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + ":" + tweet.getText());
Count++;
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
while ((query = result.nextQuery()) != null);
System.out.println(Count);
System.exit(0);
我刚测试了它,得到了275条推文,请记住documentation:
搜索API不是所有推文的完整索引,而是最近推文的索引。目前索引包含6-9天的推文。
和
在介入之前,重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。