2009-10-29 15 views
11

JavaでLuceneを使用して日付範囲を検索することはできますか?日付フィールドと日付範囲に基づいてLucene検索クエリを作成するにはどうすればよいですか?たとえば、次のように指定した日付の間JavaでLuceneで日付範囲を検索していますか?

  • 指定した日付
  • から
  • 前最後の24時間、先週、過去ヶ月以内
  • 内の指定した日付
  • 後。

[編集]私はLuceneの2.4.1を使用していますし、私のシステムが本当に遺産である、可能であれば私は

+1

はい可能です。いくつかのサンプルコードが必要な場合、私はあなたのためにいくつかを見つけるでしょう - ちょうどこのポストにコメントしてください。 Lucene in Actionを見てください - あなたはこの質問や他の多くの答えを見つけることができます。 –

答えて

18

のLucene(とにかくバージョン2.9の前に)をアップグレードする必要がないたいと思いますので、本当に悪いテスト文字列値を格納し、そのデータに対する辞書式範囲クエリのみをサポートします。したがって、日付/時刻データを格納して範囲クエリを実行する場合は、データ/時間値を辞書順に並べ替えるように明示的に書式を設定する必要があります。例えば

2009-10-29T15:34:00ようなものとしてあなたの日付/時刻を格納し、その後、別の場所で指摘したように[2009-10-29T15:00:00 TO 2009-10-29T16:00:00]

のような範囲のクエリを実行し、Luceneの2.9は最終的に作り、文字列以外のデータに対する範囲クエリのサポートが導入されましたこれはむしろ簡単です。

+7

'DateTools.dateToString(date、Resolution.SECOND)'メソッドを使うと、 '20110223220000'のような、' 2011-02-23 22:00:00'のようなlucene形式の日付文字列を生成するのに役立ちます。 – bekce

関連する問題