使用 tweet4j 按位置获取推文

Get tweet by location with tweet4j

我想在河内获取推文。

1) 我使用了搜索查询,但收到了重复的推文,如何避免?

Query query = new Query(queryString);
       GeoLocation city = new GeoLocation(latitude, longitude);
       query.geoCode(city, 20, "mi");

2) 什么是tweetID?它会随时间增加吗?我可以将 query.setSinceId(); 与上次检索的 maxID 一起使用吗?

3) 我尝试其他方式使用流获取推文,但它接收的推文不在我想要的区域(例如:来自中国或老挝)我错了吗?

 double lat = 21.082647;
 double lon = 105.822526;
 double lon1 = lon - 0.05;
 double lon2 = lon + 0.05;
 double lat1 = lat - 0.05;
 double lat2 = lat + 0.05;
 double box[][] = {{lon1, lat1}, {lon2, lat2}};
 fq.locations(box);

Search API doesn't seem what you're looking for because it only returns relevant tweets (recent and popular). If you want to get a complete list of tweets then you'll need the Streaming API

输入 lat/long 后,您会在您想要的区域之外获得一些推文(只有少数),您可以通过 post-processing 进行过滤。至少在这一点上你得到了比搜索更完整的列表 API.

我不确定您从中国或老挝获得了多少,但您始终可以细化边界以将其限制在河内。我相信你的那些有点太小 +/- .05 并不大也许 105.76,20.96,105.94,21.1 可能会有所帮助。

Twitter 的 API 首先搜索带有地理标记的推文,如果推文没有明确的地理标记,则回退到用户个人资料位置。这可能是您搜索 return 从您边界外的位置搜索推文的原因。

例如:

假设您在河内的地理位置中搜索包含查询的推文。搜索将 return 明确地标记来自河内的包含查询的推文。搜索还将 return 来自不同地理位置的推文,其中包含配置文件位置为河内的用户的查询。

我觉得你的过滤器 wrong.Restrict 更多所以你可以找到解决方案