2014-10-16 80 views
2

是否可以查詢solr usign彈簧數據來獲得一個字段的平均值/總和等? 我試圖做方面(但只有計數可用)。Spring-Data-Solr聚合函數

我發現有可用的統計組件與solr。 添加查詢一些參數,如stats.field或stats.facet應該有所幫助。

是否有可能使用spring-data-solr獲得這個?

回答

2

這還沒有在spring-data-solr上實現。新的功能要求做here,同時可以使用彈簧數據的Solr SolrOperations實現與一個回調,它允許你直接使用底層SolrServer如下執行這樣的操作:從Spring數據 -

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()); 

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();