2009-10-29 11 views
11

È possibile cercare su intervalli di date utilizzando Lucene in Java? Come posso creare query di ricerca Lucene basate su campi data e intervalli di date? Per esempio:Ricerca su intervalli di date con Lucene in Java?

  • tra le date specificate
  • prima di una data specificata
  • dopo una data determinata
  • nelle ultime 24 ore
  • entro la settimana passata
  • entro il mese passato.

[Edit] Sto utilizzando Lucene 2.4.1 e il mio sistema è davvero legacy e davvero poco testato quindi vorrei, se possibile, di non dover aggiornare

+1

Sì, è possibile. Se hai bisogno di un codice di esempio, ne troverò alcuni per te - basta chiedere in commento a questo post. Dai un'occhiata a Lucene in azione: puoi trovare risposta a questa domanda e anche a molti altri. –

risposta

18

Lucene (prima della versione 2.9 comunque) solo memorizza i valori stringa e supporta solo query intervallo lessicografico su tali dati. Pertanto, se si desidera memorizzare dati di data/ora e eseguire query di intervallo su di essi, è necessario formattare in modo esplicito i valori di data/ora in modo tale da renderli ordinati lessicograficamente.

Per esempio, memorizzare le date/orari come qualcosa di simile 2009-10-29T15:34:00, e quindi eseguire query gamma come [2009-10-29T15:00:00 TO 2009-10-29T16:00:00]

Come è stato sottolineato altrove, Lucene 2.9 finalmente introdotto il supporto per le query raggio contro i dati non di tipo stringa, rendendo tutto questo piuttosto semplice.

+7

Il metodo 'DateTools.dateToString (date, Resolution.SECOND)' può aiutarti a produrre una stringa di data in forma lucena, che è come '20110223220000', che significa' 2011-02-23 22: 00: 00'. – bekce

Problemi correlati