欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

lucene-调整索引性能

程序员文章站 2022-05-15 12:37:19
...

1、当新的Document对象增加到Lucene索引里时,它们最初将被缓存在内存中,而不是立刻写入磁盘中

2、IndexWriter提供了几个变量,用于调节缓存的大小和磁盘写入的频率。

3、IndexWriter的mergeFactor参数:

1)在将Document对象写入磁盘之前,控制在内存中存储Document对象的数量以及合并多个索引段的频率。在将它们做为单个段写入磁盘之前,Lucene在内存中默认存储10个Document对象。

2)默认10意味着磁盘上的段数达到10的乘方时,Lucene会将这些段合并为一个段。如每当有10个Document对象增加到索引中时,Lucene会在磁盘上创建一个新的段,当增加第10个大小为10个文档对象的段时,所有的这10个段会合并为大小为100的一个段。

4、IndexWriter的maxMergeDocs参数:

1)限制每个段的文档数量

2)当合并多个段时,Lucene要确保各个段中所包含的Document对象的个数不超过maxMergerDocs的大小。

5、IndexWriter的minMergeDocs参数:

1) 在Document对象被合并为一段之前,minMergerDocs的值控制着缓存的Document对象个数。

2)默认为10

3)能用更多的内存空间换取更快的索引

6、

1)从以上运行情况可以看出,操作系统为运行JVM提供更多内存时,增大mergeFactor和minMergeDocs的值可以提高索引过程速度,使用一个较大的mergeFactor值将会影响搜索性能

2)给JVM提供一个较大的内存堆可提高索引性能。进行这个操作通过java解释器中的-Xms和-Xmx参数共同完成

3)确保HotSpot、JIT的JVM选项已经激活,这会对程序运行产生积极的影响

7、如果出现打开文件过多的异常,可使用IndexWriter类的optimize()方法来对这个索引进行优化,如果仍然不能解决,则尝试通过增加机器所允许打开文件最大数,如果仍然不行,则把原来的索引转换成复合结构的索引

相关标签: lucene JVM