Solr 1.4 Date Facet Include

时间:2013-08-19 15:50:38

标签: solr faceted-search

我的目标是获取过去一年中每个月的文件数。以下是我对Solr 1.4使用的分面查询:

q=*:*
rows=0
facet=on
facet.date=myDateField
facet.date.start=NOW-11MONTH/MONTH
facet.date.end=NOW+1MONTH/MONTH
facet.date.gap=+1MONTH

此查询生成的范围为2013-01-01T00:00:00Z to 2013-02-01T00:00:00Z,其中包含上限,表示每月的第一天T00:00:00Z计入2个不同的范围。

Solr 3.1 introduces facet.date.include参数可解决我的问题,但现在升级不是一个选项。是否有解决方法来实现相同的功能?我尝试了facet.date.gap=+1MONTH-1SECOND,但是距离不够近。它产生类似这样的结束日期不正确的东西:

2012-09-01T00:00:00Z
2012-09-30T23:59:59Z
2012-10-30T23:59:58Z
2012-11-30T23:59:57Z
2012-12-30T23:59:56Z
2013-01-30T23:59:55Z
2013-02-28T23:59:54Z
2013-03-28T23:59:53Z
2013-04-28T23:59:52Z

1 个答案:

答案 0 :(得分:0)

您可以使用构面查询而不是构面范围来完成所要求的内容。 尝试这样的事情:

facet.query=myDateField:[NOW-11MONTH/MONTH TO NOW-10MONTH/MONTH] 
facet.query=myDateField:[NOW-10MONTH/MONTH TO NOW-9MONTH/MONTH] 
facet.query=myDateField:[NOW-9MONTH/MONTH TO NOW-8MONTH/MONTH] ... 

等等。

现在您可以完全控制任何单个方面,因此如果需要,您可以在最后一个方面进行-1DAY。 看一下日期数学语法的参考: http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/util/DateMathParser.html