Instead of using Date.toString()
, to generate the date string, you should use Lucene's DateTools.DateToString
. Date.toString
generates a date in " yyyy-mm-dd" format, while Lucene's DateTools
formats dates in "yyyyMMddHHmmssSSS" format, which is more suited to querying effectively with typical analyzers. Something like:
String dateOneString = DateTools.dateToString(dateOne, DateTools.Resolution.MILLISECOND);
String dateTwoString = DateTools.dateToString(dateTwo, DateTools.Resolution.MILLISECOND);
TermRangeQuery dateQuery = new TermRangeQuery("lastUpdateDate", dateTwoString, dateOneString, true, true);
I believe the default date resolution is Resolution.MILLISECOND
. This can be changed with a @DateBridge annotation.