Thanks. Timing the different parts of the indexing process led me to the real cause of the problem. I wasn't reusing my threaded indexWriter. By keeping the indexWriter open, I'm now able to index 500 documents in less than 1 second. That's huge improvement.
Thanks again, Paul -----Original Message----- From: java-user-return-45439-paul.b.murdoch=saic....@lucene.apache.org [mailto:java-user-return-45439-paul.b.murdoch=saic....@lucene.apache.org ] On Behalf Of Erick Erickson Sent: Monday, March 15, 2010 12:45 PM To: java-user@lucene.apache.org Subject: Re: Batch Indexing - best practice? What's a document? What's indexing? Here's what I'd do as a very first step. Time the actual indexing and report it out. By that I mean how long does IndexWriter.addDocument() take? If you actually get the document from wherever first then add all the fields and add the document, I'd time adding the fields too. The point is to separate the Lucene stuff from whatever else you do before trying to fix anything. The first point of the link Ian provided has the easily-overlooked phrase "and the slowness is indeed inside Lucene"... Best Erick On Mon, Mar 15, 2010 at 11:02 AM, Murdoch, Paul <paul.b.murd...@saic.com>wrote: > Thanks. I'll try lowering the merge factor and see if speed increases. > The indexing is threaded....similar to the utility class in Listing 10.1 > from Lucene in Action. Search speed is great once the index is > built....close to real time. So my main problem is getting the indexing > speed fixed. I do use the StandardAnalyzer for most of my fields. What > type of performance level should I be trying to hit for indexing > (docs/sec)...just to give me an idea of what to shoot for? > > Paul > > -----Original Message----- > From: java-user-return-45433-paul.b.murdoch=saic....@lucene.apache.org > [mailto:java-user-return-45433-paul.b.murdoch=saic....@lucene.apache.org > ] On Behalf Of Mark Miller > Sent: Monday, March 15, 2010 10:48 AM > To: java-user@lucene.apache.org > Subject: Re: Batch Indexing - best practice? > > On 03/15/2010 10:41 AM, Murdoch, Paul wrote: > > Hi, > > > > > > > > I'm using Lucene 2.9.2. Currently, when creating my index, I'm > calling > > indexWriter.addDocument(doc) for each Document I want to index. The > > Documents aren't large and I'm averaging indexing about 500 documents > > every 90 seconds. I'd like to try and speed this up....unless 90 > > seconds for 500 Documents is reasonable. I have the merge factor set > to > > 1000. Do you have any suggestions for batch indexing? Is there > > something like indexWriter.addDocuments(Document[] docs) in the API? > > > > > > > > Thanks. > > > > Paul > > > > > > > > > > > You should lower that merge factor - thats *really* high. > > You shouldn't really need much more than 50 or so ... and for search > speed your going to want fewer segments anyway - > if your just going to end up optimizing at the end, there is no reason > for such a large merge factor - you will pay for most of what > you saved when you optimize. > > That is very slow by the way. Should be much faster - especially if you > are using multiple threads. > > -- > - Mark > > http://www.lucidimagination.com > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org