我使用
根据位置过滤了推文q.location(BBOX);
如果我进一步检查这些推文是否包含我使用过的关键字
q.track("游戏&#34)
我的推文要么具有位置,要么不符合条件。 我的陈述是否正确?我哪里出错了?
答案 0 :(得分:1)
不幸的是,如果您正在使用流式传输API,这是预期的行为 - 来自documentation(强调我的):
轨道,跟随和位置字段应被视为与OR运算符组合。 track = foo& follow = 1234返回匹配用户1234创建的“foo”OR的推文。
换句话说,您应该获得包含关键字bbox
的{{1}}位置或的推文。
如果您想继续使用流式传输API,可能的解决方案可能是手动检查收到的推文是否有其他条件,即如果推文具有正确的位置,则检查关键字的状态文本等... < / p>
否则,请考虑使用search api。请参阅Twitter#search(Query)
,例如:
game
您应该会发现final Query query = new Query("game");
query.setGeocode(...);
final QueryResult result = twitter.search(query);
更像是在Twitter网站上的搜索。
但是,请注意,通过使用搜索API,您可能会错过一些推文:
...重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。 (source)
答案 1 :(得分:0)
我不知道twitter4j API,但是twitter API允许这样做,你可以使用twitter advanced search test page进行测试。
您是否能够捕获已发出的获取请求?
答案 2 :(得分:0)
您是否在twitter4J中使用Streaming API?如果是这样,我建议您查看以下示例:
FilterQuery fq = new FilterQuery();
String keywords[] = {"health", "politics"};
double[][] loc={{-122.75,36.8},{-121.75,37.8}};
fq.locations(loc);
fq.track(keywords);
twitterStream.addListener(statusListener);
twitterStream.filter(fq);