2017-02-03 10 views
0

Я начинаю с Twitter4j, мне нужно получить твиттер из Stream со специфическим хэштегом.Twitter4j: разница между поиском и дорожкой

Я нашел 2 метода:

StatusListener listener = new StatusListener() { 
... 
    public void onStatus(Status status) { 
       statuses.add(status); 
       HashtagEntity[] H = status.getHashtagEntities(); 
       System.out.println(statuses.size()+":Got tweet:\n" + status.getText()+"\n"+status.getUser().getScreenName() 
         + " | "+status.getId()+" | "+H.length+"\n"); 
       if(H.length>0){ 
        for(int i=0;i<H.length-1;i++){ 
         System.out.print(H[i]+""); 
        } 
       } 
       if (statuses.size() > nbremax) { 
        synchronized (lock) { 
         lock.notify(); 
        } 
        System.out.println("unlocked"); 
       } 
      } 
} 
FilterQuery fq = new FilterQuery();  
fq.track("#hashtag"); 
TwitterStream twitterStream = ...; 
twitterStream.addListener(listener); 
twitterStream.filter(fq); 

и

Twitter twitter = ...; 
Query query = new Query("#hastag"); 
QueryResult result = twitter.search(query); 
for (Status status : result.getTweets()) { 
    HashtagEntity[] H = status.getHashtagEntities(); 
    System.out.println("Got tweet:\n" + status.getText() 
      +"\n"+status.getUser().getScreenName()+ " | "+status.getId()+ 
      " | retweet ? "+status.isRetweet()+" | "+H.length); 
    System.out.println(status.getCreatedAt()+" | "+status.getGeoLocation()+ 
        " | "+status.getPlace()+" | "+status.getSource()); 
    if(H.length>0){ 
     for(int i=0;i<H.length;i++){ 
      System.out.print(H[i].getText()+" ; "); 
      if(i==H.length-1){ 
       System.out.println("\n"); 
      } 
     } 
    } 

В чем разница между ними? Какой метод лучше всего подходит для поиска определенного хэштега?

ответ

0

поиск: вы извлечете всех существующих твиты, содержащих данный хэштег прямо сейчас.

трек: все твиты, содержащие данную хэштегом будут потоковом к вам теперь.