You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Markus Jelsma <ma...@openindex.io> on 2016/11/24 13:12:35 UTC
Range query on date field
Hi - i seem to be having trouble correctly executing a range query on a date field.
The following Solr document is indexed via a unit test followed by a commit:
<doc>
<str name="type">view</str>
<str name="key">test_key</str>
<date name="time">2013-01-09T17:11:40Z</date>
</doc>
I can retrieve the document simply wrapping term queries in a boolean query like this:
BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder();
Query typeQuery = new TermQuery(new Term("type", "view"));
queryBuilder.add(typeQuery, Occur.MUST);
long count = searcher.get().count(queryBuilder.build());
This gets me exactly 1 in variable count. This is all fine. But i also need to restrict the query to a date, so i add a simple (or so i thought) range query!
TermRangeQuery timeQuery = TermRangeQuery.newStringRange("time", date + "T00:00:00Z", date + "T23:59:59Z", true, true);
queryBuilder.add(timeQuery, Occur.MUST);
But no, it doesn't work. No matter what i do, i don't get any results! Thinking there is something wrong with my range query, i even tried StandardQueryParser, nothing can go wrong if Lucene builds the query for me right?
StandardQueryParser parser = new StandardQueryParser();
Query q = parser.parse(type:view AND time:[" + date + "T00:00:00Z TO " + date + "T23:59:59Z]", "query");
In both cases, toString of the final query yields similar results, only the order is different. The letters T and Z are somehow lowercased by the query parser.
I feel incredible stupid so many thanks in advance!
Markus
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org