3

我正在研究当范围过滤器处于活动状态时,范围方面将相应更新。如果没有给出过滤器,我将使用默认范围和间隙。如果设置了过滤器,我会进行第二次 solr 调用以重新计算构面范围间隙。

因此,例如,起初我显示了 10 年差距的范围方面。当您过滤其中一个时,它会显示 1YEAR 的 10 个范围方面。如果您再次过滤,它将显示 12 个桶,范围为 1 个月等...

它有点工作,但是当范围过滤器包含 *. 当给出 solrfield:[1960-01-01T00:00:00Z TO *] 时,Solr 知道如何正确过滤结果,但我不知道如何根据 *. 现在,我将两个日期之间的差异计算为 unix 时间戳,并据此计算范围差距。

另外,我在这里尝试做的事情有名字吗?我将其称为“可变范围差距”,但我不确定这是否正确。

我什至不确定我正在做的是否是最好的方法。欢迎任何建议。

编辑:我的问题归结为:我想计算每个 solr 查询中字段的最高和最低日期之间的差异(作为 unix 时间戳)。

编辑 2:我做的每个 solr 调用大约需要 300 毫秒(在相对较小的索引上)。如果我使用日期排序进行 2 次额外调用以查找查询中的最高和最低日期值,这将是相当多的。然后使用正确的日期间隔(以及从/到值)执行第 4 次 solr 调用会有点慢。

4

1 回答 1

0

您可能可以将其变成熟悉的“有限日期范围”案例。如果您的数据不可能在将来设置日期时间,您可以将 * 替换为 NOW 始终接收相同的结果集(因为没有日期可以晚于当前时刻)并根据当前时间戳计算间隙。

于 2012-09-27T11:39:39.703 回答