如何使用twitter4j库执行“近”搜索推文?

时间:2011-11-05 19:33:38

标签: java twitter twitter4j

我正在尝试执行“近距离”搜索查询,以便使用

将推文逼近某个位置

twitter4j但获得例外。

public static void main(String[] args) {
    Twitter twitter = new TwitterFactory().getInstance();
    try {
        String searchTerm = "jobs near:\"san francisco\"";
        QueryResult result = twitter.search(new Query(searchTerm));
        List<Tweet> tweets = result.getTweets();
        for (Tweet tweet : tweets) {
            System.out.println("@" + tweet.getFromUser() + " - " + tweet.getText());
        }
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to search tweets: " + te.getMessage());
    }
}

我得到的例外

  

403:该请求已被理解,但已被拒绝。随附的错误消息将解释原因。由于更新限制而拒绝请求时使用此代码(https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following)。   {“error”:“参数无效”}   相关讨论可以在互联网上:       http://www.google.co.jp/search?q=d35baff5或       http://www.google.co.jp/search?q=08c3b248   TwitterException {exceptionCode = [d35baff5-08c3b248],statusCode = 403,retryAfter = -1,rateLimitStatus = null,featureSpecificRateLimitStatus = null,version = 2.2.5}无法搜索推文:403:请求已被理解,但已被拒绝。随附的错误消息将解释原因。由于更新限制而拒绝请求时使用此代码(https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following)。   {“error”:“参数无效”}

at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:185)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:85)
at twitter4j.TwitterImpl.get(TwitterImpl.java:1895)
at twitter4j.TwitterImpl.search(TwitterImpl.java:98)
at com.xebia.lightning.scheduler.JobTweetsArchiver.main(JobTweetsArchiver.java:115)

1 个答案:

答案 0 :(得分:3)

See here:&#34;近运营商无法用于搜索查询。请改用地理编码参数&#34;。

因此,将geocode参数传递给搜索:

  

返回位于给定纬度/经度的给定半径内的用户的推文。该位置优先采用地理标记API,但将回归到他们的Twitter个人资料。参数值由&#34;纬度,经度,半径&#34;指定,其中半径单位必须指定为&#34; mi&#34; (英里)或&#34; km&#34; (公里)。请注意,您不能通过API使用near运算符来对任意位置进行地理编码;但是,您可以使用此地理编码参数直接搜索地理编码附近。