Поиск в диапазонах дат с Lucene в Java?

Можно ли искать диапазоны дат с использованием Lucene в Java? Как создать поисковые запросы Lucene на основе полей даты и диапазонов дат? Например:

  • между указанными датами
  • до указанной даты
  • после указанной даты
  • в течение последних 24 часов.
  • в течение прошлой недели
  • за последний месяц.

[Edit] Я использую Lucene 2.4.1, и моя система действительно устарела и действительно плохо протестирована, поэтому я бы хотел, если бы не было необходимости обновлять

Ответ 1

Lucene (до версии 2.9 в любом случае) сохраняет только значения String и поддерживает только лексикографические запросы диапазона по этим данным. Поэтому, если вы хотите хранить данные даты и времени и выполнять запросы диапазона на нем, вам необходимо явно форматировать ваши данные/значения времени таким образом, чтобы сделать их лексикографически упорядоченными.

Например, сохраните дату/время как что-то вроде 2009-10-29T15:34:00, а затем выполните запросы диапазона, такие как [2009-10-29T15:00:00 TO 2009-10-29T16:00:00]

Как уже упоминалось в другом месте, Lucene 2.9, наконец, ввел поддержку запросов диапазона для нестроковых данных, что упростило это.