我使用以下语句来索引日期:
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?我还没有尝试过。但如果文本查询也能工作,那就太好了。有什么想法吗???
最佳答案
如果您希望范围查询以 YYYYMMDD
的形式处理日期,请像这样索引您的日期:
String dateString = DateTools.dateToString(date, Resolution.DAY);
luceneDoc.add(new Field(key, dateString, Store.YES, Index.NOT_ANALYZED));
关于java - 使用 Lucene 2.9.x 进行范围查询 - 索引中的日期不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835232/