我需要在solr中执行一个查询,该查询返回最接近给定时间戳的文档。让我们说这些是我的文件:
[{
myDateField_dt: "2012-12-01T18:37:35.282Z"
},
{
myDateField_dt: "2012-12-01T18:37:38.282Z"
},
{
myDateField_dt: "2012-12-01T18:37:40.282Z"
}]
这是我的搜索日期:2012-12-01T18:37:36.282Z
然后查询应该从我的示例文档返回第一个日期,因为它最接近我的搜索日期。我如何使用solr / lucene进行此操作?
答案 0 :(得分:1)
您使用function queries进行日期数学运算,并按您构建的公式对查询进行排序。一个可能的(未经测试的)候选人:
&sort=ms(2012-12-01T18:37:36.282Z, myDateField_dt) asc
特别有用的是ms(),if()等函数。检查日期数学here
请注意在日期字段中处理缺失值。