索引文件的多个段可以合并成一个或少量几个。这样将节省一部分硬盘空间,更重要的是,它可以加快搜索速度。需要注意的是,是加快搜索速度,并非加快索引速度。方法很简单:
optimize(int maxNumSegments, boolean doWait);
maxNumSegments 代表合并后可能存在的最大段数,也就是传入5,合并完可能存在1或2或3或4或5个段;另外就是,合并成1个段比合并成5个更耗时。
doWait 表示是否等待。如果传入false,则该方法会立即返回,索引文件的合并工作将在后台执行。
只提供一个方法是不是显得太单调了?Lucene比较蛋疼的为我们设置了两个特殊状态:maxNumSegments为1 和 doWait为true。下面是这两种的组合:
optimize(boolean doWait); //该方法的maxNumSegments为1,你可以指定doWait optimize(int maxNumSegments); //该方法的doWait为true,你可以指定maxNumSegments optimize(); //该方法的maxNumSegments为1,doWait为true
好了,这一节也非常简单,在结束之前提醒大家一下:在做Optimizing的时候,最好保证磁盘空间足够大,大到是当前索引文件的3倍!具体原因先不细谈了。