I see. Anyway I would update the array when adding a document, so my reader
would be closed then, and just a writer would be accessing the index.
Supposing that no merging is triggered (for this I'm choosing a big
mergeFactor and forcing optimization when a number of documents has been
added) the numeration will be kept.

OTOH, I do some tests with FieldCache too. As I have to keep a number of ids
(an array of shorts) for each document, I tried marshaling them into a
String so they can be retrieved from the cache later. The performance is far
better than that for directly retrieving documents but still notably behind
the array approach. Maybe this is due to the unmarshaling step, I'm still
unsure.

I will try an hybrid approach where the FieldCache stores just an int which
is itself the index to the array with the effective ids. This way I won't
have to deal with index renumbering and at the same time will keep most of
the data in memory in its definitive format.

Thank you for your answer.
Cheers,
Carlos

On 5/25/07, Antony Bowesman <[EMAIL PROTECTED]> wrote:

Carlos Pita wrote:
> Hi all,
>
> Is there any guaranty that the maxDoc returned by a reader will be about
> the
> total number of indexed documents?

It struck me in this thread was that there may be a misunderstanding of
the
relationship between numDocs/maxDoc and an IndexReader.

When an IndexReader is opened its maxDoc and numDocs will never change
regardless of the additions or deletions to the index.  At least I've not
been
able to make them change in my test cases.

So, when adding a new document after a reader has been opened, this new
document
is not yet visible via the original reader, so if you are caching that
array,
you would not update that array as it relates to the reader on the index
at the
time the reader was opened.

When you open a new reader, the numDocs and maxDoc will reflect that
addition.
Same applies to deletions.  After opening the reader, you would need to
regenerate you array cache.

As Hoss has said, this is pretty much what FieldCache does and it holds
the
caches keyed by the IndexReader.

Antony



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


Reply via email to