Поиск по диапазонам дат с Lucene в Java? - PullRequest
12 голосов
/ 29 октября 2009

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

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

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

1 Ответ

19 голосов
/ 29 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...