2017-02-09 13 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 

Специально полезными будут функции ms(), if() и т.д. Проверьте дату math here

Остерегайтесь обрабатывать недостающие значения в поле даты.

+0

пришлось объединить его с 'abs()', потому что иначе он сначала вернет самую большую * отрицательную * разницу. поэтому он становится: 'abs (ms (" 2012-12-01T18: 37: 30.281Z ", myDateField_dt)) asc' – ManuKaracho