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

3
当我向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',
        },
    },
},

然而,当我向q=*:*查询中添加任何一个参数时:

fq=photo_added:2009-12-28T18:00:00Z
fq=photo_added:2009-12-28T18%3A00%3A00Z

我收到了这样的回复:
HTTP ERROR 400: Invalid Date String:'2009-12-28T18'

当我向 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"

我在响应中收到了这个:

<result name="response" numFound="0" start="0"/>

但是当我的查询没有fq=限制时,我得到了numFound="8001000"的结果,所以这肯定是fq=限制有问题。

我应该怎样进行日期分面查询?

1个回答

5
我认为你误解了日期分面结果。如果我没记错,由于你定义了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]

1
很糟糕的是,你必须添加额外的逻辑才能获得你已经通过date.start、date.end和date.gap指定的分面。这里有一个修复此行为的功能请求:https://issues.apache.org/jira/browse/SOLR-1896 - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接