我正在使用Lucene .Net 2.9.2创建索引.经过大量的索引后,索引有很多段和删除的文档,所以我在IndexWriter上调用Optimize(numSegmets).
索引的段数确实减少到numSegmets的值,但它仍然有删除...对Optimize的调用是否也应删除所有已删除的文档?
我的问题非常重要,所以我可以知道这是Lucene的工作原理,还是我有一些bug ...
编辑:这是我的代码片段:
IndexWriter writer = new IndexWriter(/*open writer from index directroy*/);
writer.Optimize(5);
writer.Commit();
bool hasDeletions = writer.HasDeletions();
Run Code Online (Sandbox Code Playgroud)
hasDeletions是真的,而我期待它会是假的......
除非您提供1作为最大段数,否则可以保留删除.
但你不应该担心这一点.在Lucene 3.5中引用IndexWriter#optimize的文档
这种方法已被弃用,因为它非常低效且很少被证明是合理的.随着时间的推移,Lucene的多段搜索性能有所提升,默认的TieredMergePolicy现在针对具有删除的段.
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |