我们正在使用的各种搜索应用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的预制件的日期范围。
任何人都知道如何执行此搜索?
任何帮助,将不胜感激。