【发布时间】:2012-02-01 12:22:37
【问题描述】:
我有一个特定的应用程序,它要求构成索引的文件数量尽可能少。以前,当我使用 Lucene.NET 2.9.2 时,我可以通过以下方式将整个索引保存在 3 个(或 4 个)文件中:
writer.SetUseCompoundFile(true);
writer.Optimize(1, true);
升级到 Lucene.NET 2.9.4 后,相同的代码会生成由 10 个文件(fdt、fdx、fnm、frq、nrm、prx、tii、tis + segments.gen 和 segments_c)组成的索引。我怎样才能再次降低它?
造成这种情况的原因可能在 Lucene 中很深,而不是 Lucene.NET 特有的。版本之间仍有一些变化,我很想控制它。
【问题讨论】:
-
您的索引目录中有 CFS 文件吗?我刚刚测试过,复合文件似乎可以在 2.9.4g 版本中正常工作...
-
不,我没有。我看到了一些对此 CFS 文件的网络参考,但我没有。请问是不是我的版本太低了?这是当前推荐的稳定版本。我刚刚查了一下,确切的版本是 2.4.9.1。
-
我刚刚使用 Nuget 的 2.9.4.1 版本进行了测试,它工作正常。您确定在调用 SetUseCompoundFile(true) 后调用 commit() 或正确关闭 Writer 吗?
-
什么时候需要调用
SetUseCompoundFile(true)?我在创建作家后调用它。然后,当我想关闭作者时,我会执行writer.Optimize(1, true),然后立即执行writer.Commit()。 -
它只需要在调用commit之前调用,我个人是在创建IndexWriter后立即设置的。请注意,它仅适用于新发出的段
标签: lucene lucene.net