lucene Document Numbers

Document Numbers

在lucene内部,指向文档(document)是用integer型的文档序号。第一个加入的文档是0,之后逐渐加一。

注意:这个文档序号是会变化的,所以在存储这些序号到外部时应该注意并采取相应的措施。一般以下情况会使序号发现变化:

在每个segment里这个序号都是唯一的,所以在一个更大的上下文中必须转换一下。标准的做法是给一个特定的segment一个特定的范围的起始号码。当这个segment要转换时把其中的序号加上这个起始号就可以了。倒过来转换时减去这个基号就可以了。比如两个都包含5个document的segments合并时,第一个segment的基号是0,第二个的基号是5。第二个segment里的第三个document的外部序号就应该是5+2=7。

当文档被删除时,序号中间会有空隙。这些空隙会在merge时去除。被删除的文档会在merge时真正地删除。一个合并完成的segment是没有序号空隙的。