Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Twitter4j_検索結果取得のタイムラグ

初めまして。
現在Twitter連携を行うPGを作成しようとしています。

できる限りリアルタイムでTweetの検索を行いたいのですが、Twitter4jを利用して検索を行うと
30秒ほど経過した結果以降のTweetしか取得できず、難航しています。(理想は5~10秒後程度)

Twitter4jを利用するとこの程度のラグは発生するものなのでしょうか?
改善方法等あればご教授頂けますと幸いです。

以下テストロジックです。

*************************************************
public class MainTweetQuery {
    Twitter tw = null;

    /**
     * コンストラクタ Twitterインスタンス生成
     */
    public MainTweetQuery() throws TwitterException {
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true);
                cb.setOAuthConsumerKey("XXXXXXXXXX");
        cb.setOAuthConsumerSecret("XXXXXXXXX");
        cb.setOAuthAccessToken("XXXXXXXXXXXXXXX");
        cb.setOAuthAccessTokenSecret("XXXXXXXXXXXXX");
        TwitterFactory tf = new TwitterFactory(cb.build());
        tw = tf.getInstance();
    }


    /**
     * 検索処理実行
     */
    public void query() throws TwitterException {

        Query qr = new Query();
        qr.setQuery("XXXXXX");  //検索文字
        qr.setResultType(Query.RECENT);
        qr.setSince("2017-01-02");

        QueryResult result = tw.search(qr);

        System.out.println(result.getTweets().size());

        //先頭のみ取得
        if (result.getTweets().size() > 0) {
            Status tweet = result.getTweets().get(0);
            // 本文
            System.out.println(tweet.getText());
            // 発言したユーザ
            System.out.println(tweet.getUser().getName());
            // 発言した日時
            System.out.println(tweet.getCreatedAt());
        }
    }
}

2

回答

140

閲覧

2件の回答

評価

0

APIの処理はWebとは別に作られているし、結果が同じでなくとも不思議はないな。
とくに検索は厄介なもので、一般的に負荷も高いので、定期的にコピーしたデータに対して検索を掛けている可能性がある。

そこは諦めるしかない気がする。

評価

0

回答ありがとうございます。
やはりこの方法では難しいのですね…

別手段を検討したところ、TwitterStreamという別の結果取得方法を見つけましたので
そちらの動作を検証してみます。

ありがとうございました。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名