是否可以查询 solr ussign spring 数据以获得一个字段的平均值/总和等?我试图做方面(但只有计数可用)。
我发现 solr 有可用的统计组件。添加查询一些参数,如 stats.field 或 stats.facet 应该会有所帮助。
是否可以使用 spring-data-solr 获得这个?
是否可以查询 solr ussign spring 数据以获得一个字段的平均值/总和等?我试图做方面(但只有计数可用)。
我发现 solr 有可用的统计组件。添加查询一些参数,如 stats.field 或 stats.facet 应该会有所帮助。
是否可以使用 spring-data-solr 获得这个?
这还没有在 spring-data-solr 上实现。这里做了一个新的功能请求,同时你可以使用 spring-data-solrSolrOperations
实现通过回调来执行这样的操作,允许你直接使用底层的 SolrServer,如下所示:
Map<String, FieldStatsInfo> response = template.execute(new SolrCallback<Map<String, FieldStatsInfo>>() {
@Override
public Map<String, FieldStatsInfo> doInSolr(SolrServer solrServer) throws SolrServerException, IOException {
SolrQuery params = new SolrQuery("*:*");
params.add(StatsParams.STATS, "true");
params.add(StatsParams.STATS_FIELD, "price");
QueryResponse query = solrServer.query(params);
return query.getFieldStatsInfo();
}
});
System.out.println("Price sum....: " + response.get("price").getSum());
System.out.println("Price mean...: " + response.get("price").getMean());
System.out.println("Price min....: " + response.get("price").getMin());
System.out.println("Price max....: " + response.get("price").getMax());
从 spring-data-solr 版本 1.4 M1 开始,您可以使用StatsOptions
如下方式实现它:
SimpleQuery statsQuery;
...
statsQuery.setStatsOptions(new StatsOptions().addField("price"));
...
StatsPage<Product> statsPage = solrTemplate.queryForStatsPage(statsQuery, Product.class);
FieldStatsResult priceStatResult = statResultPage.getFieldStatsResult("price");
Object max = priceStatResult.getMax();
Long missing = priceStatResult.getMissing();