2016-04-04 11 views
1

twitterからクエリを検索するプログラムを作成しようとしています。私が抱えている問題は、APIが100の結果クエリのみを返し、さらに検索しようとすると、同じ結果が返され続けることです。twitter4jを使用して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

@timrau私のコードに関連するときに、その投稿の回答がかなり混乱していて、自分のコードに関する問題を解決する別の方法があるかどうかを知りたいと思っていました。 – shah

答えて

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日間が含まれています。

そして:巻き込ま前

、それは検索APIは、関連性に焦点を当て、完全されていないことを知っておくことが重要です。つまり、一部のツイートやユーザーが検索結果に表示されないことがあります。完全性を一致させたい場合は、代わりにStreaming APIの使用を検討する必要があります。

+0

結果が変わるのは普通ですか?時々私は108個のつぶやきを取得し、それ以外の時間には12個を取得します。 – shah

+0

これは正常です: "関与する前に、検索APIは関連性と完全性に焦点を当てていることを知っておくことが重要です。完全一致の場合は、代わりにStreaming APIの使用を検討する必要があります。 – FeanDoe

+0

私はプログラムを1回の呼び出しで複数回実行しようとしていますが、同じ結果を印刷し続けます。本質的には、私がラテリットを打つまでAPIを呼び出すことができるようにしたい。しかし、今はそれがラチリットを打つが、何度も何度も同じ結果を印刷し続ける。これが周りにありますか? – shah

関連する問題