0

我已经从 lucene 3.x 迁移到 4.1.0。创建新索引后,我意识到索引目录中有更多文件。lucene 3 使用 IndexWriter.optimize() 来折叠文件。v4中的继任者是IndexWriter.forceMerge(int maxNumSegments)。我已经尝试使用 maxNumSegments 的不同值进行 forceMerge 并且我总是得到相同的索引文件。我希望将这些文件合并为一个或至少更少的索引文件。我错了吗?你知道怎么做吗?

4

2 回答 2

6

除了意识形态(更少文件比更多文件更好)之外,您需要更少文件是否有任何实际原因?提供给定索引的总字节数大致相同,有什么区别?

删除优化的原因是因为它效率低下:它会破坏搜索性能,结果负载峰值等。在多个段上搜索的性能已经提高,并且.optimize() 不再需要这样做。Lucene 现在使用TieredMergePolicy它来很好地平衡负载并从不同的角度解决这个问题。

于 2013-01-30T09:59:18.577 回答
3

也许您正在寻找 Lucene 的复合文件格式,它将所有逻辑索引文件存储在单个实际文件中。请参阅MergePolicy.setUseCompoundFile(true)

于 2013-01-30T10:39:49.533 回答