【问题标题】:solr / lucene: Query closest datesolr / lucene:查询最近的日期
【发布时间】:2017-02-09 10:26:34
【问题描述】:

我需要在 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 做到这一点?

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    您使用function queries 进行一些日期数学运算,并根据您构建的公式对查询进行排序。一个可能的(未经测试的)候选人:

    &sort=ms(2012-12-01T18:37:36.282Z, myDateField_dt) asc
    

    特别有用的是 ms()、if() 等函数。检查日期数学here

    也要注意处理日期字段中的缺失值。

    【讨论】:

    • 必须将它与abs() 结合起来,否则它将首先返回最大的差异。所以它变成:abs(ms("2012-12-01T18:37:30.281Z", myDateField_dt)) asc
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2017-10-02
    • 2020-08-26
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多