今天用了lukeall里面的一个功能optimize也就是索引优化,
发现有花时间比较长但是优化结果比较好,
索引里面的所有段文件都merge到一个段文件里去了,
于是自己就试了一下,虽然没有lukeall优化的好,
但起码比之前几百个碎文件要好的多了下面是代码,lucene用的是4.8 当然也可以用lukeall去优化,但是你得找到一个版本和索引版本一致的lukeall ,或者搜索版本>lukeall版本>索引版本(得用三套才行 太麻烦了)
根据方法名称大致就能知道是什么意思(其实我也有好多意思不知道 哈哈 ^_^)
IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_48,analyzer);
ConcurrentMergeScheduler scheduler = new ConcurrentMergeScheduler();
scheduler.setMaxMergesAndThreads(2, 1);
scheduler.setMergeThreadPriority(1);
TieredMergePolicy policy = new TieredMergePolicy();
policy.setMaxMergeAtOnce(10);
policy.setMaxMergeAtOnceExplicit(30);
policy.setMaxMergedSegmentMB(5120);//根据自己电脑配置设置
policy.setFloorSegmentMB(2);
policy.setForceMergeDeletesPctAllowed(10);
policy.setSegmentsPerTier(10.0);
policy.setMaxCFSSegmentSizeMB(8 * 1024);//根据自己电脑配置设置
policy.setNoCFSRatio(1);
conf.setRAMBufferSizeMB(16);
conf.setMaxBufferedDocs(-1);
conf.setReaderTermsIndexDivisor(1);
conf.setTermIndexInterval(128);
conf.setMergeScheduler(scheduler);
conf.setMergePolicy(policy);
conf.setUseCompoundFile(true);
这是之前的,
这是刚出炉的
少了很多碎文件,我知道肯定还能优化的更完美,目前来说我只能优化这么多,以后慢慢调试优化。。