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 David Santamauro <da...@gmail.com> on 2016/01/08 11:23:58 UTC

date difference faceting

Hi,

I have two date fields, d_a and d_b, both of type solr.TrieDateField, 
that represent different events associated with a particular document. 
The interval between these dates is relevant for corner-case statistics. 
The interval is calculated as the difference: sub(d_b,d_a) and I've been 
able to

   stats=true&stats.field={!func}sub(d_b,d_a)

What I ultimately would like to report is the interval represented as a 
range, which could be seen as facet.query

(pseudo code)
   facet.query=sub(d_b,d_a)[ * TO 86400000 ] // day
   facet.query=sub(d_b,d_a)[ 86400001 TO 604800000 ] // week
   facet.query=sub(d_b,d_a)[ 604800001 TO 2592000000 ] // month
etc.

Aside from actually indexing the difference in a separate field, is 
there something obvious I'm missing? I'm on SOLR 5.2 in cloud mode.

thanks
David

Re: date difference faceting

Posted by David Santamauro <da...@gmail.com>.
For anyone wanting to know an answer, I used

facet.query={!frange l=0 u=31104000000}ms(d_b,d_a)
facet.query={!frange l=31104000001 u=62208000000}ms(d_b,d_a)
facet.query={!frange l=62208000001 u=155520000000}ms(d_b,d_a)

etc ...

Not the prettiest nor most efficient but accomplishes what I need 
without re-indexing TBs of data.

thanks.

On 01/08/2016 12:09 PM, Erick Erickson wrote:
> I'm going to side-step your primary question and say that it's nearly
> always best to do your calculations up-front during indexing to make
> queries more efficient and thus serve more requests on the same
> hardware. This assumes that the stat you're interested in is
> predictable of course...
>
> Best,
> Erick
>
> On Fri, Jan 8, 2016 at 2:23 AM, David Santamauro
> <da...@gmail.com> wrote:
>>
>> Hi,
>>
>> I have two date fields, d_a and d_b, both of type solr.TrieDateField, that
>> represent different events associated with a particular document. The
>> interval between these dates is relevant for corner-case statistics. The
>> interval is calculated as the difference: sub(d_b,d_a) and I've been able to
>>
>>    stats=true&stats.field={!func}sub(d_b,d_a)
>>
>> What I ultimately would like to report is the interval represented as a
>> range, which could be seen as facet.query
>>
>> (pseudo code)
>>    facet.query=sub(d_b,d_a)[ * TO 86400000 ] // day
>>    facet.query=sub(d_b,d_a)[ 86400001 TO 604800000 ] // week
>>    facet.query=sub(d_b,d_a)[ 604800001 TO 2592000000 ] // month
>> etc.
>>
>> Aside from actually indexing the difference in a separate field, is there
>> something obvious I'm missing? I'm on SOLR 5.2 in cloud mode.
>>
>> thanks
>> David

Re: date difference faceting

Posted by Erick Erickson <er...@gmail.com>.
I'm going to side-step your primary question and say that it's nearly
always best to do your calculations up-front during indexing to make
queries more efficient and thus serve more requests on the same
hardware. This assumes that the stat you're interested in is
predictable of course...

Best,
Erick

On Fri, Jan 8, 2016 at 2:23 AM, David Santamauro
<da...@gmail.com> wrote:
>
> Hi,
>
> I have two date fields, d_a and d_b, both of type solr.TrieDateField, that
> represent different events associated with a particular document. The
> interval between these dates is relevant for corner-case statistics. The
> interval is calculated as the difference: sub(d_b,d_a) and I've been able to
>
>   stats=true&stats.field={!func}sub(d_b,d_a)
>
> What I ultimately would like to report is the interval represented as a
> range, which could be seen as facet.query
>
> (pseudo code)
>   facet.query=sub(d_b,d_a)[ * TO 86400000 ] // day
>   facet.query=sub(d_b,d_a)[ 86400001 TO 604800000 ] // week
>   facet.query=sub(d_b,d_a)[ 604800001 TO 2592000000 ] // month
> etc.
>
> Aside from actually indexing the difference in a separate field, is there
> something obvious I'm missing? I'm on SOLR 5.2 in cloud mode.
>
> thanks
> David