lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Barry Coughlan <b.coughl...@gmail.com>
Subject Re: Indexing and searching a DateTime range
Date Mon, 09 Feb 2015 23:50:12 GMT
Hi Gergely,

Writing an analyzer would work but it is unnecessarily complicated. You
could just parse the date from the string in your input code and index it
in the LongField like this:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S'Z'");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
long t = format.parse("2015-02-08 00:02:06.123Z INFO...").getTime();

Barry

On Tue, Feb 10, 2015 at 12:21 AM, Gergely Nagy <fogetti@gmail.com> wrote:

> Thank you for taking your time to respond Karthik,
>
> Can you show me an example how to convert DateTime to milliseconds? I mean
> how can I pipe my converter logic into the indexing process?
>
> I suspect I need to write my own Analyzer/Tokenizer to achieve this. Is
> this correct?
>
> 2015-02-09 22:58 GMT+09:00 KARTHIK SHIVAKUMAR <nskarthik.k@gmail.com>:
>
> > Hi
> >
> > Long time ago,.. I used to store datetime in millisecond .
> >
> > TermRangequery used to work in perfect condition....
> >
> > Convert all datetime to millisecond and index the same.
> >
> > On search condition again convert datetime to millisecond and use
> > TermRangequery.
> >
> > With regards
> > Karthik
> > On Feb 9, 2015 1:24 PM, "Gergely Nagy" <fogetti@gmail.com> wrote:
> >
> > > Hi Lucene users,
> > >
> > > I am in the beginning of implementing a Lucene application which would
> > > supposedly search through some log files.
> > >
> > > One of the requirements is to return results between a time range.
> Let's
> > > say these are two lines in a series of log files:
> > > 2015-02-08 00:02:06.852Z INFO...
> > > ...
> > > 2015-02-08 18:02:04.012Z INFO...
> > >
> > > Now I need to search for these lines and return all the text
> in-between.
> > I
> > > was using this demo application to build an index:
> > >
> > >
> >
> http://lucene.apache.org/core/4_10_3/demo/src-html/org/apache/lucene/demo/IndexFiles.html
> > >
> > > After that my first thought was using a term range query like this:
> > >         TermRangeQuery query =
> TermRangeQuery.newStringRange("contents",
> > > "2015-02-08 00:02:06.852Z", "2015-02-08 18:02:04.012Z", true, true);
> > >
> > > But for some reason this didn't return any results.
> > >
> > > Then I was Googling for a while how to solve this problem, but all the
> > > datetime examples I found are searching based on a much simpler field.
> > > Those examples usually use a field like this:
> > > doc.add(new LongField("modified", file.lastModified(), Field.Store.NO
> ));
> > >
> > > So I was wondering, how can I index these log files to make a range
> query
> > > work on them? Any ideas? Maybe my approach is completely wrong. I am
> > still
> > > new to Lucene so any help is appreciated.
> > >
> > > Thank you.
> > >
> > > Gergely Nagy
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message