2014-10-16 3 views
2

Можно ли запросить данные весны весны, чтобы получить среднее значение/сумму и т. Д. Для одного поля? Я попытался сделать грани (но есть только количество доступных).Функции агрегата Spring-Data-Solr

Я обнаружил, что есть компоненты статистики, доступные с solr. Добавление к запросу некоторых параметров, таких как stats.field или stats.facet, должно помочь.

Возможно ли получить это с использованием пружинных данных-solr?

ответ

2

Это еще не реализовано в spring-data-solr. Новый запрос Функции был сделан here, а между тем, вы можете использовать пружинные данные 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()); 

С пружинным данных- 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(); 
Смежные вопросы