我有像这样的solr查询
q=categories:cat1 OR categories:cat2&stats=true&stats.field=count&stats.facet=block_num
基本上,我想通过块num得到sum(count)组。
此查询适用于浏览器。但是使用solrj,我无法从Response obj访问stats字段。我可以做一个response.getFieldStatsInfo()。但这不是我想要的。以下是我构建查询的方法
SolrQuery query = new SolrQuery(q);
query.add("stats", "true");
query.add("stats.field", "count");
query.add("stats.facet", "block_num");
使用调试器,我可以看到响应有一个私有的statsInfo对象,它有我正在寻找的信息。但是没有api可以访问该对象。
我想知道是否有
谢谢!
答案 0 :(得分:3)
可以这样做:
// Field names
private static final String FIELD_ONE = "field_one";
private static final String FIELD_TWO = "field_two";
// Initialized somewhere in constructor
private final HttpSolrServer solrClient;
public void printStats() throws SolrServerException {
final SolrQuery query = new SolrQuery("*:*");
query.setGetFieldStatistics(true);
query.setGetFieldStatistics(FIELD_ONE);
query.setGetFieldStatistics(FIELD_TWO);
final QueryResponse response = solrClient.query(query);
final FieldStatsInfo fieldOneStats = response.getFieldStatsInfo().get(FIELD_ONE);
System.out.println(fieldOneStats.getSum());
System.out.println(fieldOneStats.getMin());
System.out.println(fieldOneStats.getMax());
final FieldStatsInfo fieldTwoStats = response.getFieldStatsInfo().get(FIELD_TWO);
System.out.println(fieldTwoStats.getSum());
System.out.println(fieldTwoStats.getMin());
System.out.println(fieldTwoStats.getMax());
}