Twitter4j只聚集某个国家

时间:2014-08-17 12:29:38

标签: api stream twitter4j

对于我目前正在处理的项目,我需要从一个国家/地区的流中收集推文。 虽然Twitter4j流API允许按语言过滤,但结果不够准确。所以我想通过检查推文的country属性是否填充来在过滤器顶部放置一个过滤器。当我检查是否有值时,这可以正常工作:

if(status.getPlace().getCountry() != null) {
            System.out.println("User: " + status.getUser().getName());
            System.out.println("Text: : " + status.getText());
            System.out.println("Country: " + status.getPlace().getCountry());
            System.out.println("Language: " + status.getLang());
            }
        }

    TwitterStream ts = new TwitterStreamFactory(cb.build()).getInstance();
    ts.addListener(listener);

    FilterQuery filter = new FilterQuery(); 

    String[] language = {"country"};
    String[] keywords = {"some keywords"}; 

    filter.track(keywords);
    filter.language(language); 

    ts.filter(filter);

但如果我检查某个国家,例如德国我没有收到任何推文:

if(status.getPlace().getCountry() != "germany") {
            System.out.println("User: " + status.getUser().getName());
            System.out.println("Text: : " + status.getText());
            System.out.println("Country: " + status.getPlace().getCountry());
            System.out.println("Language: " + status.getLang());
            }
        }

如果有人可以帮助我,那将会很棒。

1 个答案:

答案 0 :(得分:0)

filter.track(keywords);
filter.language(language); 

请注意,上述代码的含义为track(keywords)language(language)。 这不符合逻辑。

如果您只需要来自一个国家和某些关键字的推文,请移除filter.language(language)并在获得状态后查看该国家/地区。

if(status.getPlace().getCountry().equalsIgnoreCase("germany")) {}

//字符串比较

如果德国没有人发布你指定过滤器的推文,你就不会收到来自德国的推文。