我已过滤使用过滤鸣叫
q.location(BBOX)的基础上位置鸣叫;
,如果我有进一步的检查是否这些微博已经设置的关键字我用
q.track(“游戏”)
我的鸣叫要么位置或不字这两个条件都得到满足。 我的陈述是否正确?我哪里做错了?
我已过滤使用过滤鸣叫
q.location(BBOX)的基础上位置鸣叫;
,如果我有进一步的检查是否这些微博已经设置的关键字我用
q.track(“游戏”)
我的鸣叫要么位置或不字这两个条件都得到满足。 我的陈述是否正确?我哪里做错了?
我不知道twitter4j API,但twitter API允许这样做,你可以用twitter advanced search test page来测试它。
您是否能够捕获发出的获取请求?
你在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);
我做了同样的事情,但是得到了其中一个查询的结果。推文是基于位置还是基于关键字。但我想根据位置获取推文,这些推文应该有关键字。 – Keerthana
它应该工作。如果您在推特内容中有网址,请检查该网址是否包含其中一个关键字。这意味着没有必要在推文内容中包含关键字。它发生了。 – mgokhanbakal
不幸的是,如果你使用的是流式API,这是预期的行为 - 从documentation(重点煤矿):
跟踪,跟踪和位置字段应视为与OR运算符结合使用。轨道= FOO &后续= 1234的回报鸣叫匹配“foo”的方式或通过用户换句话说创造1234
所以,你应该获得与bbox
位置或包含关键字game
鸣叫。
如果你想继续使用流API,一个可能的解决方案可能是手动检查接收到的Tweets的其他条件,即如果Tweet有正确的位置,然后检查关键字等状态文本...
否则,请考虑使用search api代替。见Twitter#search(Query)
,例如:
final Query query = new Query("game");
query.setGeocode(...);
final QueryResult result = twitter.search(query);
您应该发现Twitter#search(Query)
更象在Twitter网站上的搜索。
但是,要知道,通过使用搜索API,你可能会错过一些鸣叫:
...它知道搜索API的重点是相关性和不完全性是很重要的。这意味着某些推文和用户可能会从搜索结果中遗失。如果您想匹配完整性,则应考虑使用Streaming API。 (source)
加起来@乔纳森的答案,如果你决定继续使用流API(这是我建议做的,如果你想要实时结果和更少的负担):请注意的问题与Twitter的API返回结果之外您定义的边界框的位置:https://dev.twitter.com/issues/295。意味着您应该验证地理标签是否在您感兴趣的范围内。 –
是的..我试着用twitter高级搜索,我得到的结果,但我想在twitter4j API中做到这一点。 :( – Keerthana
当你使用twitter4j时,你能够捕获正在发送的http请求吗?如果你能证明它没有为twitter查询生成正确的URL,那么你可以提交一个twitter4j错误 –