首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建只包含一个段的Lucene索引

创建只包含一个段的Lucene索引
EN

Stack Overflow用户
提问于 2019-02-09 08:51:27
回答 1查看 711关注 0票数 0

如何创建只包含一个段(不使用强制合并)的Lucene索引--我有超过足够的RAM,所以我尝试使用1.5GB的缓冲区大小来处理高达64-128 10的mucj较小的索引,但在索引结束时仍然有5-10个段。我能做些什么?

代码语言:javascript
复制
public static final double DEFAULT_RAM_BUFFER_SIZE_MB_STORE = 1536.;

...

final File file = new File(pathIndex);
final Path path = file.toPath();
final Directory index = ControlObjectsLuceneIndex.createDirectory(path, file);
final IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
indexWriterConfig.setRAMBufferSizeMB(defaultRamBufferSizeMb);
indexWriterConfig.setSimilarity(_ekspertSimilarity);
indexWriterConfig.setUseCompoundFile(false);
return new IndexWriter(index, indexWriterConfig);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 09:55:31

当上次刷新后添加了足够多的文档时,就会触发刷新。通过使用文档的RAM (请参阅IndexWriterConfig.setRAMBufferSizeMB(double))或添加文档的数量(请参阅IndexWriterConfig.setMaxBufferedDocs(int))来触发刷新。

这意味着,如果您想要防止刷新-您需要设置这两个值的上限,以确保添加的文档数量和RAM的使用将少于您的限制。

另一种方法可能是将IndexWriterConfig.DISABLE_AUTO_FLUSH传递到setMaxBufferedDocssetRAMBufferSizeMB中,以防止由于缓冲文档的数量或内存的使用而触发刷新。请注意,但是您不能将这两个值都设置为DISABLE_AUTO_FLUSH,而且很可能您应该能够更容易地计算出文档数量,而不是内存的数量。

此外,请确保IndexWriter的使用仅在单线程中(或正确同步)。

来源:0/core/org/apache/lucene/index/IndexWriter.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54604689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档