gpt4 book ai didi

azure - 为什么未使用的段文件没有被删除?

转载 作者:行者123 更新时间:2023-12-03 06:04:21 24 4
gpt4 key购买 nike

我不知道发生了什么变化——我们的 Lucene 实现工作得相对顺利。但现在,索引目录中的文件数量不断增长。它从 _0 文件开始,然后出现 _1 文件,然后是 _2 和 _3 文件。如果该目录开始时存在现有文件,我将 false 传递给 IndexWriter 的构造函数作为“create”参数:

indexWriter = new IndexWriter(azureDirectory, analyzer, (azureDirectory.ListAll().Length == 0), IndexWriter.MaxFieldLength.UNLIMITED);
if (indexWriter != null)
{
// Set the number of segments to save in memory before writing to disk.
indexWriter.MergeFactor = 1000;
indexWriter.UseCompoundFile = false;
indexWriter.SetRAMBufferSizeMB(800);
...
indexWriter.Dispose(); indexWriter = null;
}

也许它与 UseCompoundFile 标志有关?

每隔几分钟,我就会创建一个新的 IndexWriter,处理 10,000 个文档,然后处理该 IndexWriter。索引有效,但文件数量不断增加非常糟糕,因为我使用的是 AzureDirectory,它在开始 Lucene 写入之前将每个文件从 Azure 复制到缓存目录中。

谢谢。

最佳答案

这是正常行为。如果您想要单个索引段,您有一些选择:

  • 使用复合文件
  • 如果您使用 LogMergePolicy,请使用 MergeFactor 1,这是 lucene 3.0 的默认策略。请注意,您在 IndexWriter 上使用的方法只是一个调用 mergePolicy.MergeFactor 的便捷方法,只要 mergePolicy 是 LogMergePolicy 的实例即可。
  • 每次更新索引后运行优化

每次更新后的低合并因子和优化可能会对应用程序的性能产生严重的影响,这取决于您执行的索引类型。

请参阅此链接,其中记录了 MergeFactor 的一些效果: http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/core/org/apache/lucene/index/LogMergePolicy.html#setMergeFactor%28%29

关于azure - 为什么未使用的段文件没有被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com