我使用以下语句来索引日期:
luceneDoc.add(new NumericField(key).setLongValue(date.getTime()));
我还使用如下语句来添加文本属性:
luceneDoc.add(new Field(key, value, Field.Store.YES, Field.Index.ANALYZED));
然后我执行文本属性查询:
author:hans
这很完美.但是当我执行范围查询时,没有返回任何内容:
my-date-property:[20100101 TO 20110101]
我在这里错过了什么?
我看了Luke的索引,我看到了文档的所有文本属性,但是日期属性只出现在概述页面中……也许这是正常的.
如果我像这样添加它,我实际上看到日期属性:
NumericField field = new NumericField(key, Field.Store.YES, true);
field.setLongValue(date.getTime());
luceneDoc.add(field);
但是:查询仍然无效!也许它只能在Java中使用Query Builder?我还没试过.但是如果文本查询也可以工作那将是很好的.任何的想法???
解决方法:
如果您希望范围查询以YYYYMMDD形式使用日期,请将日期编入索引,如下所示:
String dateString = DateTools.dateToString(date, Resolution.DAY);
luceneDoc.add(new Field(key, dateString, Store.YES, Index.NOT_ANALYZED));