首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-Data-Solr聚合函数

Spring-Data-Solr聚合函数
EN

Stack Overflow用户
提问于 2014-10-17 03:47:15
回答 1查看 911关注 0票数 2

是否可以查询solr usign弹簧数据以获得一个字段的平均值/总和等?我尝试使用facet(但只有count可用)。

我发现solr中有可用的Stats组件。在查询中添加一些像stats.field或stats.facet这样的参数应该会有所帮助。

有没有可能使用spring-data-solr来获得它?

EN

回答 1

Stack Overflow用户

发布于 2014-10-18 18:09:25

这还没有在spring-data-solr上实现。here完成了一个新功能请求,同时你可以使用spring-data-solr SolrOperations实现来执行这样的操作,并通过一个回调来允许你直接使用底层的SolrServer,如下所示:

代码语言:javascript
复制
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实现此功能,如下所示:

代码语言:javascript
复制
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();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26412651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档