2017-02-09 74 views
0

我需要在solr中執行查詢,該查詢返回距離給定時間戳最近的文檔。比方說,這些都是我的文件:solr/lucene:查詢最近日期

[{ 
    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來做到這一點?

回答

1

您使用function queries來進行一些日期數學計算,並使用您構建的公式對查詢進行排序。一個可能的(未經測試)人選:

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

特別有用的是毫秒(),如果()等函數。檢查日期數學here

當心也處理日期字段中的缺失值。

+0

不得不將它與'abs()'結合起來,否則它會首先返回最大的*負*差。所以它變成:'abs(ms(「2012-12-01T18:37:30.281Z」,myDateField_dt))asc' – ManuKaracho