如何在Solr中指定日期构面查询?

Nei*_*eil 3 solr

当我对Solr进行查询时,我得到了这些facet_counts:

'facet_counts' => {
    'facet_dates' => {
        'photo_added' => {
            '2009-12-28T18:00:00Z' => 396386,
            '2010-05-28T18:00:00Z' => 415370,
            'gap' => '+1MONTH',
            'end' => '2011-02-28T18:00:00Z',
        },
    },
},
Run Code Online (Sandbox Code Playgroud)

但是,当我向查询中添加这些参数中的任何一个q=*:*:

fq=photo_added:2009-12-28T18:00:00Z
fq=photo_added:2009-12-28T18%3A00%3A00Z
Run Code Online (Sandbox Code Playgroud)

我收到这个作为回应:

HTTP ERROR 400: Invalid Date String:'2009-12-28T18'
Run Code Online (Sandbox Code Playgroud)

当我向查询中添加这些参数中的任何一个时:q=*:*

fq=photo_added:"2009-12-28T18:00:00Z"
fq=photo_added:"2009-12-28T18%3A00%3A00Z"
fq%3Dphoto_added%3A%222009-12-28T18%3A00%3A00Z%22
fq=photo_added%3A"2009-12-28T18%3A00%3A00Z"
Run Code Online (Sandbox Code Playgroud)

我在回复中收到了这个:

<result name="response" numFound="0" start="0"/>
Run Code Online (Sandbox Code Playgroud)

但是当我fq=对我的查询没有约束时,我得到了numFound="8001000",所以这个fq=约束肯定有问题.

如何进行有效的日期构面查询?

Mau*_*fer 5

我认为你错误地解释了日期方面的结果.IIRC,由于你定义了1个月的差距,结果'2009-12-28T18:00:00Z' => 396386意味着在2009-12-28T18:00:00Z和2010-01-28T18:00:00Z(一个月)之间有396386个结果.

但是,您正在运行具有确切日期的过滤器查询,并且您没有得到任何结果,因为没有文档完全匹配该日期和时间.如果要获取这些396386文档,请运行一个过滤查询,其范围介于上面提到的日期之间:fq=photo_added:[2009-12-28T18:00:00Z TO 2010-01-28T18:00:00Z]