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

标签 java lucene range

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

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/

相关文章:

excel - 在Excel宏中选择范围

java - SimpleMessageListener 与 DirectMessageListener

java - Spring Boot DTO + JPA 与 List<T> 属性

java - 其他人知道这是什么意思吗?

lucene - Elasticsearch使整个索引或类型为not_analyzed

mysql - 创建表时的 SQL 整数范围

java - 覆盖接口(interface)的变量?

java - 当每个要排名的实体都是一组文档时,可以使用 Lucene 吗?

hibernate 搜索排序

python - 列表索引语义错误