2017-02-09 14 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を使用して日付計算を行い、作成した式でクエリを並べ替えます。 1つの可能な(テストされていない)候補:

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

ms()、if()などの関数が特に便利です。日付計算を確認してくださいhere

日付フィールドにも欠損値を処理するように注意してください。

+0

は、abs()と組み合わせなければならなかった。なぜなら、そうでなければ、最大*負の差を最初に返すからだ。 'abs(ms(" 2012-12-01T18:37:30.281Z "、myDateField_dt))asc'になります。 – ManuKaracho

関連する問題