2014-01-28 129 views
2

我已过滤使用过滤鸣叫

q.location(BBOX)的基础上位置鸣叫;

,如果我有进一步的检查是否这些微博已经设置的关键字我用

q.track(“游戏”)

我的鸣叫要么位置或不字这两个条件都得到满足。 我的陈述是否正确?我哪里做错了?

回答

0

我不知道twitter4j API,但twitter API允许这样做,你可以用twitter advanced search test page来测试它。

您是否能够捕获发出的获取请求?

+0

是的..我试着用twitter高级搜索,我得到的结果,但我想在twitter4j API中做到这一点。 :( – Keerthana

+0

当你使用twitter4j时,你能够捕获正在发送的http请求吗?如果你能证明它没有为twitter查询生成正确的URL,那么你可以提交一个twitter4j错误 –

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); 
+0

我做了同样的事情,但是得到了其中一个查询的结果。推文是基于位置还是基于关键字。但我想根据位置获取推文,这些推文应该有关键字。 – Keerthana

+0

它应该工作。如果您在推特内容中有网址,请检查该网址是否包含其中一个关键字。这意味着没有必要在推文内容中包含关键字。它发生了。 – mgokhanbakal

1

不幸的是,如果你使用的是流式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

+1

加起来@乔纳森的答案,如果你决定继续使用流API(这是我建议做的,如果你想要实时结果和更少的负担):请注意的问题与Twitter的API返回结果之外您定义的边界框的位置:https://dev.twitter.com/issues/295。意味着您应该验证地理标签是否在您感兴趣的范围内。 –