我在Solr中有很多这样的数据:
{
id: some_id
date: 2008-01-01T00:00:00Z
price: 34.20
currency: "CAD"
weight: 39.9
etc
}
我想对其进行搜索以找到唯一的ID集,并按时间对其进行分组。所以有时候我想找到满足每天,每周或每月搜索需求的物品。
我尝试执行此操作的第一种方法是将fq
(字段查询)设置为所需的日期范围,并设置facet.field=id
以获取该范围的唯一ID,但是如果我想要每天做一次,我必须做365(+ 0 / + 1)个查询,这很痛苦而且很慢。
对此的一种解决方案是使用facet.pivot=date,id
,将其分解为每一天,然后每天提供一组ID。这是完美的日常情况!但是,我们每周如何实现同一目标?还是每月?
我想要的是第一个facet.pivot
,即日期,它是一个值范围。所以不要得到这个:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z",
"count":923,
"pivot":[{
"field":"id",
"value":18,
"count":1},
{
"field":"id",
"value":66,
"count":1},
{
"field":"id",
"value":70,
"count":1},
]
}
...]
}
}
我们得到这样的东西:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
"count":923,
"pivot":[...similar to above]
}
...]
}
}
换句话说,它不是根据date
的值进行分组,而是根据范围/间隔/等进行分组。我已经开玩笑了SOLR的间隔,范围等,但是似乎无法获得有用的东西。
答案 0 :(得分:0)
请尝试以下操作,以获取每月间隔与周的间隔。
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
我希望这会有所帮助!