Lucene的查询在索引的DateField通过的Solr(Lucene Query on a Da

2019-09-24 06:17发布

我们正在使用的各种搜索应用Solr的索引。 在大多数情况下,我们使用它,就像你会与管理界面。 例如:

+text:Mr +text:burns +publish_date[2012-09-10T00:00:00Z TO 2012-10-10T00:00:00Z]

这工作得很好。
我的问题是,在一个应用程序,我们使用Lucene的复杂查询直接对指数(不使用SOLR)是和这些查询我找不到如何在日期字段进行搜索。
在schema.xml中:

<field name="publish_date" type="date" indexed="true" stored="true"/>

看来,Solr的存储日期UNIX时间以毫秒为单位,从指数拉场时,它看起来像1336867200000

在Lucene的我已经想尽查询我能想到的:

TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "1299628800000", "1336867200000", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "1299628800", "1336867200", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "2012-09-10T00:00:00Z", "2012-10-10T00:00:00Z", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "20120910", "20121010", true, true);
NumericRangeQuery nq1 = NumericRangeQuery.newLongRange("publish_date", 1299628800, 1336867200, true, true);

和一些其他的尝试...
这并返回结果的唯一查询是

TermRangeQuery nq1 = new TermRangeQuery("publish_date",  null, null, true, true);

当然,这是与“打开终端”查询,但它似乎适用该字段建立索引字符串(同样没有为int范围或远程工作)。
令人沮丧的是,它显然是可能的,我只是要弄清楚它是如何剂量Solr的预制件的日期范围。
任何人都知道如何执行此搜索?
任何帮助,将不胜感激。

Answer 1:

该“1336867200000”是一个时间戳,是的。

TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "1299628800000", "1336867200000", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "1299628800", "1336867200", true, true); 
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "2012-09-10T00:00:00Z", "2012-10-10T00:00:00Z", true, true); 
TermRangeQuery nq1 = new TermRangeQuery("publish_date",  "20120910", "20121010", true, true);

因为你使用字符串参数数值数据上面的人将无法正常工作。

NumericRangeQuery nq1 = NumericRangeQuery.newLongRange("publish_date", 1299628800, 1336867200, true, true);

因为你没有足够的零填充它这一个是行不通的。 1299628800个代表周五1月16日2时00分28秒格林尼治标准时间1970年。

如果你有09/03/2011和13/05/2012年之间文件(S),下面应该工作:

NumericRangeQuery nq1 = NumericRangeQuery.newLongRange("publish_date", 1299628800000L, 1336867200000L, true, true);


文章来源: Lucene Query on a DateField indexed by Solr
标签: solr lucene