我正在研究范围过滤器处于活动状态时,范围构面将相应更新。如果没有给出过滤器,我使用的是默认范围&间隙。如果设置了过滤器,我会进行第二次solr调用以重新计算构面范围间隙。
因此,例如,首先我展示了10年间隙的范围方面。当您过滤其中一个时,它会显示10个1YEAR的范围方面。如果再次过滤,它将显示12个具有1个月范围等的桶......
它有点工作,但是当范围过滤器包含*时我遇到了麻烦。当solrfield:[1960-01-01T00:00:00Z TO *]给出时,Solr知道如何正确过滤结果,但我不知道如何根据*重新计算日期范围方面间隙。现在我计算两个日期之间的差异作为unix时间戳,并根据它计算范围差距。
另外,我在这里要做的是什么名字?我称之为“可变范围间隙”,但我不确定这是否正确。
我甚至不确定我所做的是最好的方法。欢迎任何建议。
编辑:我的问题是:我想计算每个solr查询中字段的最高和最低日期之间的差异(作为unix时间戳)。
编辑2:我做的每次solr调用大约需要300ms(在一个相对较小的索引上)。如果我使用日期排序进行2次额外调用以查找查询中的最高和最低日期值,那就相当多了。然后使用正确的日期间隔(以及从/到值)执行第4次solr调用会变得有点慢。
答案 0 :(得分:0)
您可以将其变成熟悉的“限制日期范围”案例。如果你的数据不可能在将来设置日期时间,你可以用NOW替换*总是接收相同的结果集(没有日期可以晚于当前时刻)并根据当前时间戳计算差距。