根据两个条件twitter API过滤推文

时间:2014-01-28 21:52:18

标签: java search twitter filter twitter4j

我使用

根据位置过滤了推文
  

q.location(BBOX);

如果我进一步检查这些推文是否包含我使用过的关键字

  

q.track("游戏&#34)

我的推文要么具有位置,要么不符合条件。 我的陈述是否正确?我哪里出错了?

3 个答案:

答案 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);