Right, but my question was whether merging segments will renumber docs *if
no documents are deleted*.  Empirically, the answer is no.  I've written
test code that indexes documents with a field equal to each document's
current id, and verified that the ids still match the field values even
after merges and optimizes are done, if no docs are deleted.  This seems to
indicate that merging always preserves the current id order, which
is perhaps the obvious way to implement merging.  (Though of course an
alternative reasonable implementation, for example. might have been to add
everything from one segment to the merged segment, then add everything from
the next segment, etc., thus renumbering everything.)

Given all the misinformation or ambiguous information on this topic that
I've found, I was hoping to clear this up definitively.  My test case
doesn't prove that there's not some way for ids to change in certain
circumstances (apart from deletions, which is documented clearly).  But
right now I don't see any reason not to believe the FAQ entry mentioned in
my original email.

Thanks,
Chris

On Fri, May 14, 2010 at 2:04 PM, Chris Lu <chris...@gmail.com> wrote:

> The doc id will get changed if the segments are merged. The doc id is more
> depending on the order of documents being added.
>
> Just think about it. The doc ids are starting from 0 to N. And when some
> documents are deleted, they are marked deleted on .del file. So no change
> there. When some documents are added, the id is N+1.
>
> Of course, if some documents from other segments are merged. The documents
> in one segment will "lose" its doc id.
>
> --
> Chris Lu
> -------------------------
> Instant Scalable Full-Text Search On Any Database/Application
> site: http://www.dbsight.net
> demo: http://search.dbsight.com
> Lucene Database Search in 3 minutes:
> http://wiki.dbsight.com/index.php?title=Create_Lucene_Database_Search_in_3_minutes
> DBSight customer, a shopping comparison site, (anonymous per request) got
> 2.6 Million Euro funding!
>
>
> On 05/13/2010 06:38 PM, Nigel wrote:
>
>> The FAQ clearly states that document IDs will not be re-assigned unless
>> something was deleted.
>>
>> http://wiki.apache.org/lucene-java/LuceneFAQ#When_is_it_possible_for_document_IDs_to_change.3F
>>
>> However, a number of other emails and posts I've read mention that
>> renumbering occurs when segments are merged.  Maybe what people mean
>> is simply that when something is deleted, nothing is immediately
>> renumbered,
>> and it's not until merge time that the renumbering happens.  (This is my
>> understanding of how it works.)
>>
>> Just so I'm 100% clear, if I never delete anything, will the IDs ever
>> change?
>>
>> Thanks,
>> Chris
>>
>>
>>
>
>
>  ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

Reply via email to