【发布时间】:2016-10-29 08:53:14
【问题描述】:
我们在 solr 文档中有任何事件的即将到来的日期 (upcomingDate fireld)。我们需要从现在到未来(右方向)的 ASC 排序中的事件和从现在到过去(左方向)的 DESC 排序中的事件得到结果。我们如何在一个查询中做到这一点?
例如:
结果:NEADH
【问题讨论】:
我们在 solr 文档中有任何事件的即将到来的日期 (upcomingDate fireld)。我们需要从现在到未来(右方向)的 ASC 排序中的事件和从现在到过去(左方向)的 DESC 排序中的事件得到结果。我们如何在一个查询中做到这一点?
例如:
结果:NEADH
【问题讨论】:
尝试以下排序查询
if(gte(ms(upcomingDate,NOW),0),ms(upcomingDate,NOW),sum(ms(NOW,upcomingDate),4125333600000)) asc
凡是大于等于现在的都会自然升序排序(问题描述图中N E A)。
另一方面,小于现在的所有内容都将从现在减去并添加到对应于遥远未来日期的毫秒(我在此示例代码中使用了 2100 年)。通过这种方式,您可以实现过去日期的降序(问题描述图中的D H)。
总之:N E A D H
如果有人想在 Solr 发行版提供的 techproducts 集合上尝试此查询:
if(gte(ms(manufacturedate_dt,2006-02-13T15:26:36Z),0),ms(manufacturedate_dt,2006-02-13T15:26:36Z),sum(ms(2006-02-13T15:26:36Z,manufacturedate_dt),4125333600000)) asc
【讨论】:
sort 查询参数决定考虑哪些字段。