【问题标题】:Spring-Data-Solr aggregate functionsSpring-Data-Solr 聚合函数
【发布时间】:2014-10-16 19:47:14
【问题描述】:

是否可以查询 solr ussign spring 数据以获得一个字段的平均值/总和等? 我尝试做方面(但只有计数可用)。

我发现 solr 有可用的统计组件。 添加查询一些参数,如 stats.field 或 stats.facet 应该会有所帮助。

是否有可能使用 spring-data-solr 获得这个?

【问题讨论】:

    标签: solr spring-data spring-data-solr


    【解决方案1】:

    这还没有在 spring-data-solr 上实现。 here 完成了一个新功能请求,同时您可以使用 spring-data-solr SolrOperations 实现执行此类操作,并通过回调允许您直接使用底层 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多