我有一种情况需要在LUCENE 4.0中的两个日期范围(包括较低和较高值)之间搜索数据。 我在索引中有一个字段,其字符串值的格式为“YYYY-MM-DD HH:MM:SS”。现在我需要在日期范围之间进行搜索。但我没有得到我期待的结果。以下是我的代码 -
String startValue = "2008-01-01 00:00:45";
String endValue = "2016-02-10 00:00:00";
Query query = new TermRangeQuery("Field51", new BytesRef(startValue), new BytesRef(endValue), true, true);
//Final Query for Search
Final Query for Search : Field51:[2008-01-01 00:00:45 TO 2016-02-10 00:00:00]
129 documents found. Time taken :93 milli seconds.
上面的查询给出了从2009年开始的结果。跳过了2008年到2009年之间的任何日期。因此,如果我的开始日期是2010年,那么我将获得的结果将来自2011年。
一种解决方案是以毫秒为单位索引我的日期字段,以便我可以执行数字搜索。但我不想改变约会的格式。
我已经迭代了命中并将结果转换为HashMap的ArrayList,如下所示,
[{Field51=2009-09-06 13:58:09}, {Field51=2009-02-02 13:51:14}, {Field51=2009-01-17 08:11:02}, {Field51=2009-09-29 12:55:34},....
我有129个结果,但结果没有一个是2008年的日期。而我的数据是2008年的年份。