Java 基于双条件twitter API的推文过滤
我已经根据位置使用 q、 位置(bbox) 如果我有进一步检查这些推文是否有我使用的一组关键字 q、 轨道(“游戏”) 我的推文要么有位置,要么有文字,但这两个条件都不满足。Java 基于双条件twitter API的推文过滤,java,search,twitter,filter,twitter4j,Java,Search,Twitter,Filter,Twitter4j,我已经根据位置使用 q、 位置(bbox) 如果我有进一步检查这些推文是否有我使用的一组关键字 q、 轨道(“游戏”) 我的推文要么有位置,要么有文字,但这两个条件都不满足。 我的陈述正确吗?我哪里出错了?我不知道twitter4j API,但是twitter4j API允许这样做,您可以使用进行测试 您是否能够捕获发出的get请求?您是否在twitter4J中使用流式API?如果是这样,我可以建议您看下面的一个示例: FilterQuery fq = new FilterQuery();
我的陈述正确吗?我哪里出错了?我不知道twitter4j API,但是twitter4j API允许这样做,您可以使用进行测试
您是否能够捕获发出的get请求?您是否在twitter4J中使用流式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);
不幸的是,如果您使用的是流式api,这是预期的行为-来自(我的重点): “轨迹”、“跟随”和“位置”字段应视为与OR运算符组合使用。track=foo&follow=1234返回与“foo”匹配或由用户1234创建的tweet 因此,换句话说,您应该获得带有
bbox
位置或包含关键字game
的tweet
如果您想继续使用流式api,一个可能的解决方案可能是手动检查接收到的推文的其他情况,即如果推文的位置正确,则检查关键字等的状态文本
否则,请考虑使用。例如,见:
final Query query = new Query("game");
query.setGeocode(...);
final QueryResult result = twitter.search(query);
你会发现Twitter\search(Query)
的工作原理更像Twitter网站上的搜索
但是,请注意,通过使用搜索api,您可能会错过一些推文:
…重要的是要知道搜索API关注的是相关性而不是完整性。这意味着搜索结果中可能缺少一些推文和用户。如果要匹配完整性,则应该考虑使用流式API。
()
是的。我尝试了twitter高级搜索,我得到了结果,但我想在twitter4j API中实现这一点:(你能捕获使用twitter4j时发出的http请求吗?如果你能证明它没有为twitter4j查询生成正确的URL,那么你可以提交twitter4j bugI,我也这么做了,但得到了其中任何一个查询的结果。twitter4j要么基于位置,要么基于关键字。但我想得到tweets基于位置,这些推文应该有关键词。它应该可以工作。如果你在推文内容中有url,请检查url是否有一个关键词。这意味着推文内容中不必有关键词。如果你决定继续使用流式API,那么加起来就是@Jonathan的答案(如果您希望获得实时结果并减轻负担,我建议您这样做):请注意twitter的API在您定义的边界框之外返回结果的问题:。意味着您应该验证地理标记是否在您感兴趣的范围内。