0

我的目标是获取过去一年中每个月的文档数量。这是我针对 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 引入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
4

1 回答 1

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

于 2013-08-19T20:02:39.463 回答