java - 优化 Lucene 的压缩比

标签 java lucene

我有一个 Lucene 用例,其中所需的搜索类型非常简单。我可能会使用 DOCS_ONLY 索引,不带存储字段或任何复杂的附加组件。这些文档是非结构化英文文本。

对于此用例,最重要的优化是原始文档与索引磁盘大小的压缩比。 Lucene 索引应该尽可能小,即使以增加搜索和更新延迟为代价。

我想知道应该如何配置 Lucene(任何版本)来完成此任务。特别是,应该使用什么编解码器?有没有一种方法强调压缩而不是搜索速度?我可以调整其他设置来优化帖子列表压缩吗?

tl;dr: 对于 Lucene 中的 DOCS_ONLY 索引,如何使索引尽可能小?

最佳答案

一般来说,减少索引大小的关键思想是 - 存储尽可能少,索引尽可能少。

在获得问题的正确答案之前,首先要回答几个问题。例如,您的指数有多大,您预计它会增长多少?我问这个问题是因为可能不值得您花时间尝试将索引大小减小到某个阈值以下。

我之前见过,人们通过使用将索引大小减少了 40%-50% SimpleAnalyzer将文档写入索引而不是使用 StandardAnalyzer (通常需要更多存储空间)但这会影响搜索性能。您在帖子中提到,您已准备好承受搜索时间的增加,但准备好牺牲搜索性能了吗?这是一个非常重要的问题。如果您已经达到阈值,那么不值得付出努力来减小索引的大小!

我还看到人们为了缩小尺寸而改变了其他因素。例如,根据文档 Index.NO_NORMS 将为索引中的每个文档节省一个字节。甚至有时人们说,为了压缩数字数据(我从未检查过自己),可以更改索引/存储在索引中的数字的基数。

此外,我想下面的两篇文章会对您有所帮助。

(1) SOLR index size reduction (2)How to reduce the size of a generated Lucene/Solr index?

您可以阅读此post也是。

关于java - 优化 Lucene 的压缩比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903569/

相关文章:

elasticsearch - 获取多个平均聚合

php - ElasticSearch 映射非可搜索字段

java - 如何统计HQL中的子查询?

java - 哪个是最好的 Java 索引程序?

java - Solr:结合 EdgeNGramFilterFactory 和 NGramFilterFactory

java - 在自定义 sourceDirectory 的情况下,Eclipse maven 构建路径问题

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

java - android google登录后如何初始化firebase?

java - Android Media Player 同时播放多首歌曲

java - Spring 4 @AutoWired 失败