Searching on date ranges with Lucene in Java?

2019-03-25 04:43发布

Is it possible to search on date ranges using Lucene in Java? How do I build Lucene search queries based on date fields and dates ranges? For example:

  • between specified dates
  • prior to a specified date
  • after a specified date
  • within the last 24 hours
  • within the past week
  • within the past month.

[Edit] i'm using Lucene 2.4.1 and my system is really legacy and really poorly tested so i would like if possible not to have to upgrade

标签: java lucene date
1条回答
Summer. ? 凉城
2楼-- · 2019-03-25 05:08

Lucene (before version 2.9 anyway) only stores String values, and it only supports lexicographical range queries on that data. So if you want to store date/time data and performa range queries on it, you need to explicitly format your data/time values in such a way as to make them lexicographically ordered.

For example, store your date/times as something like 2009-10-29T15:34:00, and then do range queries like [2009-10-29T15:00:00 TO 2009-10-29T16:00:00]

As has been pointed out elsewhere, Lucene 2.9 finally introduced support for range queries against non-string data, making this all rather easier.

查看更多
登录 后发表回答