使用twitter4j搜索超过100个查询

时间:2016-04-04 14:59:09

标签: java json twitter4j

我正在尝试创建一个从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个响应的内容。

1 个答案:

答案 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。