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/

相关文章:

java - Hibernate Search 中的 boolean 查询

java - Elasticsearch - EdgeNgram + highlight + term_vector = 不好的亮点

java - ElasticSearch TransportClient 失败,无法初始化类 org.elasticsearch.common.lucene.Lucene

java - DropDownChoice 设置选定的特定索引

java - 如何在jsp页面中显示生成的图像?

java - Google 日历 API v3 在创建 channel 时返回 (503 backendError)

java - 如何在 solr 4.8 中获取字段的总和

solr - 如何通过 geodist() 的逆来提高 Solr 相关性分数

java - 从绑定(bind)到托管 bean 的单选按钮组获取值

Java方法来反转字符串数组中的每个单词