Forwarding this to java-dev per request. Seems like the best place to discuss this topic.

        Erik


Begin forwarded message:

From: "John Wang" <[EMAIL PROTECTED]>
Date: October 17, 2007 5:43:29 PM EDT
To: [EMAIL PROTECTED]
Subject: lucene indexing and merge process

Hi Erik:

We are revamping our search system here at LinekdIn. And we are using Lucene.

One issue we ran across is that we store an UID in Lucene which we map to the DB storage. So given a docid, to lookup its UID, we have the following solutions:

1) Index it as a Stored field and get it from reader.document (very slow if recall is large) 2) Load/Warmup the FieldCache (for large corpus, loading up the indexreader can be slow) 3) construct it using the FieldCache and persist it on disk everytime the index changes. (not suitable for real time indexing, e.g. this process will degrade as # of documents get large)

None of the above solutions turn out to be adequate for our requirements.

What we end up doing is to modify Lucene code by changing SegmentReader,DocumentWriter,and FieldWriter classes by taking advantage of the Lucene Segment/merge process. E.g:

For each segment, we store a .udt file, which is an int[] array, (by changing the FieldWriter class)

     And SegmentReader will load the .udt file into an array.

     And merge happens seemlessly.

Because the tight encapsulation around these classes, e.g. private and final methods, it is very difficult to extend Lucene while avoiding branch into our own version. Is there a way we can open up and make these classes extensible? We'd be happy to contribute what we have done.

I guess to tackle the problem from a different angle: is there a way to incorporate FieldCache into the segments (it is strictly in memory now), and build disk versions while indexing.


     Hope I am making sense.

I did not send this out to the mailing list because I wasn't sure if this is a dev question or an user question, feel free to either forward it to the right mailing list or let me know and I can forward it.


Thanks

-John



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to