Lucene修改和删除索引的性能

严格的说,lucene底层并不支持对某个文档的修改。因为它的紧密结构抗拒了对文档的直接修改。当需要修改某些文档的时候,可以是这样的:

1.删除这些文档。这样会使得这些文档ID加入到已经删除的文档表里面。

2.构建新的索引。这样会生成一个新的segment。

3.合并索引的所有segment。这样会把所有的segment都合并到一起,构成唯一的一个segment。

大家可以看到,如果仅仅从以上3步来看,lucene的修改索引的性能极差。好在可以利用缓冲,分批的懒惰的进行上面的第2步和第3步。