lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <...@thetaphi.de>
Subject RE: Indexing a Date/DateTime/Time field in Lucene 4
Date Wed, 05 Apr 2017 13:36:10 GMT
Hi,

a string field is the worst idea when you want to do range queries (from...to). This will
not scale and gets very slow on large indexes with many distinct datetime values! In that
case you should use a long field (LongField in Lucene 5, LongPoint in 6+) and search for a
long range. For sorting _always_ use long docvalues, strings need much more memory and disk
IO and perform slower on sorting.

If you do not need high precision, I'd suggest to take an integer field/point and use some
scaled down timestamp (like seconds instead of milliseconds or whole days). If its dates and
time is unimportant, just divide by 86.400.000 (to have full day precision) and store as integer
(days since 1970-01-01).

Uwe

-----
Uwe Schindler
Achterdiek 19, D-28357 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de

> -----Original Message-----
> From: Frederik Van Hoyweghen
> [mailto:frederik.vanhoyweghen@chapoo.com]
> Sent: Wednesday, April 5, 2017 3:17 PM
> To: java-user@lucene.apache.org
> Subject: Re: Indexing a Date/DateTime/Time field in Lucene 4
> 
> Let's say I want to search between 2 dates, search for a date that's
> before/after another, etc (the usual stuff ^^ ), is this all with either
> fieldtype?
> 
> Thanks for your reply!
> Frederik
> 
> On Wed, Apr 5, 2017 at 3:04 PM, Adrien Grand <jpountz@gmail.com> wrote:
> 
> > Hi Frederik,
> >
> > Both options would work but LongField (or LongPoint on Lucene 6.0+)
> would
> > indeed provide better performance for range queries. If you need to sort or
> > aggregate date values, you might also want to add a
> NumericDocValuesField.
> >
> > Le mer. 5 avr. 2017 à 14:38, Frederik Van Hoyweghen <
> > frederik.vanhoyweghen@chapoo.com> a écrit :
> >
> > > Hey everyone,
> > >
> > > I'm seeing some conflicting suggestions concerning the type of field to
> > use
> > > for indexing a Date/DateTime/Time value.
> > >
> > > Some suggest conversion using DateTools.timeToString() and using a
> > > StringField,
> > > while others suggest using the long value of getTime() and using a
> > > LongField (this is supposed to perform better using NumericRangeQuery).
> > >
> > > What are your opinions on this?
> > >
> > > Kind regards,
> > > Frederik
> > >
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message