You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Esteban Donato <es...@gmail.com> on 2011/09/26 20:07:57 UTC

aggregate functions in Solr?

Hello guys,

  I need to implement a functionality which requires something similar
to aggregate functions in SQL.  My Solr schema looks like this:

-doc_id: integer
-date: date
-value1: integer
-value2: integer

  Basically the index contains some numerical values (value1, value2,
etc) per doc and date.  Given a date range query, I need to return
some stats consolidated by docs for that given date range.  I typical
response could be something like this:

doc_id, sum(value1),  avg(value2),  sum(value1)/sum(value2).

  I checked StatsComponent using stats.facet=doc_id but it seems it
doesn't cover my needs (especially for complex stats like
sum(value1)/sum(value2)).  Also checked FieldCollapsing but I couldn't
find a way to configure an aggregate function there.

  Is there any way to implement this, or I will have to resolve it out of Solr?

Regards,
Esteban

RE: aggregate functions in Solr?

Posted by Steve McKay <sm...@gcefederal.com>.
> -----Original Message-----
> From: Esteban Donato [mailto:esteban.donato@gmail.com]
> Sent: Monday, September 26, 2011 2:08 PM
> To: solr-user@lucene.apache.org
> Subject: aggregate functions in Solr?
> 
> Hello guys,
> 
>   I need to implement a functionality which requires something similar
> to aggregate functions in SQL.  My Solr schema looks like this:
> 
> -doc_id: integer
> -date: date
> -value1: integer
> -value2: integer
> 
>   Basically the index contains some numerical values (value1, value2,
> etc) per doc and date.  Given a date range query, I need to return
> some stats consolidated by docs for that given date range.  I typical
> response could be something like this:
> 
> doc_id, sum(value1),  avg(value2),  sum(value1)/sum(value2).
> 
>   I checked StatsComponent using stats.facet=doc_id but it seems it
> doesn't cover my needs (especially for complex stats like
> sum(value1)/sum(value2)).  Also checked FieldCollapsing but I couldn't
> find a way to configure an aggregate function there.
> 
>   Is there any way to implement this, or I will have to resolve it out of
> Solr?
> 
> Regards,
> Esteban

To use your example, you could query stats.field=value1&stats.field=value2&stats.facet=doc_id and calculate sum(value1)/sum(value2) in a Velocity template. I'm not sure it's a *good* solution, but that's a way you could get the results you want in the response from Solr.

Steve