java – 使用Lucene 2.9.x的范围查询 – 索引中的日期不起作用

我使用以下语句来索引日期:

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));
上一篇:Lucene入门及实际项目应用场景


下一篇:lucene入门