> I am currently having serious performance problems with
> date range queries. What I am doing, is validating a
> datasets published status by a valid_from and a valid_till
> date field.
> 
> I did get a performance boost of ~ 100% by switching from a
> normal solr.DateField to a solr.TrieDateField with
> precisionStep="8", however my query still takes about 1,3
> seconds.
> 
> My field defintion looks like this:
> 
> <fieldType name="date" class="solr.TrieDateField"
> precisionStep="8" sortMissingLast="true"
> omitNorms="true"/>
> 
> <field name="valid_from" type="date" indexed="true"
> stored="false" required="false" />
> <field name="valid_till" type="date" indexed="true"
> stored="false" required="false" />
> 
> 
> And the query looks like this:
> ((valid_from:[* TO 2010-04-29T10:34:12Z]) AND
> (valid_till:[2010-04-29T10:34:12Z TO *])) OR ((*:*
> -valid_from:[* TO *]) AND (*:* -valid_till:[* TO *])))
> 
> I use the empty checks for datasets which do not have a
> valid from/till range.
> 
> 
> Is there any way to get this any faster?

I can suggest you two things. 

1-) valid_till:[* TO *] and valid_from:[* TO *] type queries can be performance 
killer. You can create a new boolean field ( populated via conditional copy or 
populated client side) that holds the information whether valid_from exists or 
not. So that valid_till:[* TO *] can be rewritten as valid_till_bool:true.

2-) If you are embedding these queries into q parameter, you can write your 
clauses into (filter query) fq parameters so that they are cached. 


      

Reply via email to