Solr多个分面日期

5
根据Apache Solr关于分面的文档,我可以使用键,因为:“当在同一字段上多次进行不同排除的聚合时,这将非常有帮助。”
我需要它们,因为我想要一个显示“最近一天”、“最近一周”、“最近一个月”选项的聚合。
但是,当我指定以下选项的查询时:
http://URL/select?
...unrelated...
facet=true&
facet.date={!key=some_key}created&
f.some_key.facet.date.start=NOW/DAY-1DAY&
f.some_key.facet.date.end=NOW/DAY&
f.some_key.facet.date.gap=NOW/DAY+1DAY
...unrelated...

Solr报错:

[exception] => org.apache.solr.common.SolrException: 缺少必需参数: f.created.facet.date.start (或默认值:facet.date.start)

当我设置facet.date.start或f.created.facet.date.start时,它们会覆盖我的一些关键字段(start/end/gap),这是无用的,因为我需要多个关键字...有人能指点我正确的方向吗?由于我使用的库的限制,这需要在单个查询中完成。

1个回答

11

您可以使用分面查询:

http://URL/select?
...unrelated...
facet=true&    
facet.query=[NOW-1DAY TO NOW]&
facet.query=[NOW-7DAY TO NOW]&
facet.query=[NOW-1MONTH TO NOW]&
...unrelated...

成功使用copyFields进行了黑客攻击,现在没有时间进行更改,但这似乎也是一个合理的解决方案。有一些声誉! :) - Daniel Sloof
3
虽然该解决方案可行,但需要注意,由于 "NOW" 的存在,过滤缓存将永远不会被命中。LucidWorks在 http://searchhub.org/dev/2012/02/23/date-math-now-and-filter-queries/ 提供了替代方法,可以更或多或少地实现相同的结果,但允许查询使用过滤缓存。 - Chris Pliakas

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