Thank you Barry, I really appreciate your time to respond,

Let me clarify this a little bit more. I think it was not clear.

I know how to parse dates, this is not the question here. (See my previous
email: "how can I pipe my converter logic into the indexing process?")

All of your solutions guys would work fine if I wanted to index
per-document. Which I do NOT want to do. What I would like to do to index
per log line.

I need to do a full text search, but with the additional requirement to
filter those search hits by DateTime range.

I hope this makes it clearer. So any suggestions how to do that?

Sidenote: I saw that Alfresco implemented this analyzer, called
DateTimeAnalyzer, but Alfresco is not open source. So I was wondering how
to implement the same. Actually after wondering for 2 days, I became
convinced that writing an Analyzer should be the way to go. I will post my
solution later if I have a working code.

2015-02-10 8:50 GMT+09:00 Barry Coughlan <b.coughl...@gmail.com>:

> 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 <foge...@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 <nskarthi...@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" <foge...@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
> > > >
> > >
> >
>

Reply via email to