lucene-调整索引性能(转)
lucene-调整索引性能
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()方法来对这个索引进行优化,如果仍然不能解决,则尝试通过增加机器所允许打开文件最大数,如果仍然不行,则把原来的索引转换成复合结构的索引