2012-06-07 54 views
4

我正在使用twitter4j庫來訪問公開的twitter流。我正在嘗試製作一個包含地理標記的推文的項目,並且我需要收集大量的文章進行測試。我可以請求/過濾Twitter流式API嗎只返回帶有地理標記的推文嗎?

現在我正在從twitter獲取未經過濾的流,只保存包含地理標記的推文。這很慢,因爲VAST大多數推文沒有地理標籤。我希望Twitter流僅向我發送包含地理標記的推文。

我已經嘗試過使用this question中提到的方法,在這裏你用一個尺寸爲360 * * 180 *的邊界框進行過濾,但這對我不起作用。我在使用該過濾器時沒有收到任何錯誤,但我仍然收到99%的推文,沒有地理標記。下面是我如何做它:

ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
    .setOAuthConsumerKey("censored") 
    .setOAuthConsumerSecret("censored") 
    .setOAuthAccessToken("censored") 
    .setOAuthAccessTokenSecret("censored"); 

TwitterStream twitterStream = newTwitterStreamFactory(cb.build()).getInstance(); 
StatusListener listener = new MyStatusListener(); 
twitterStream.addListener(listener); 

//add location filter for what I hope is the whole planet. Just trying to limit 
//results to only things that are geotagged 
FilterQuery locationFilter = new FilterQuery(); 
double[][] locations = {{-180.0d,-90.0d},{180.0d,90.0d}}; 

locationFilter.locations(locations); 

twitterStream.filter(locationFilter); 

twitterStream.sample(); 

爲什麼我仍然沒有得到地理標記的鳴叫有什麼建議?

編輯:我剛剛重讀twitter4j javadoc關於添加過濾器的twitter流,它說:「默認的訪問級別允許多達200個跟蹤關鍵字,400跟隨userids和10個1度位置框。所以包圍盒可能只有1度寬?這與我遇到的原始信息不同。這是我的問題嗎?我的過濾請求太大,因此被忽略?我在嘗試使用它時沒有遇到任何錯誤。

回答

7

從過濾流中獲取,然後用樣本流覆蓋它。

刪除最後一行:twitterStream.sample();

+0

哇,謝謝你的答案。我幾乎忘了這個問題。我仍然收到一些沒有地理標記的推文,但這是一個很大的改進。在使用地理標籤之前,我只能使用大約1/1000推文,現在我可以通過地理標籤獲得大約3/5的推文。不知道爲什麼我仍然缺少一些,但這肯定有幫助。 –

相關問題