SOLR按不同日期范围分组



我在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的值进行分组,而是基于范围/间隔等进行分组。我试过SOLRs的间隔、范围等,但似乎找不到有效的东西。

请像下面这样尝试,以获得具有周间隔的月度范围。

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

我希望这能有所帮助!

最新更新