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.MURDOCH@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.com@lucene.apache.org
[mailto:java-user-return-45433-PAUL.B.MURDOCH=saic.com@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-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org