1、调整MaxBufferedDocs和MergeFactor,经过调试,发现MaxBufferedDocs=1000,MergeFactor=100时性能较好。
indexModifier
=
new
IndexModifier(
@"
c:/indexpath
"
,
new
StandardAnalyzer(),
true
);
indexModifier.SetMaxBufferedDocs(
1000
);
indexModifier.SetMergeFactor(
100
);
2、使用IndexModifier类,线程安全的。
indexModifier.AddDocument(document);
3、使用线程池ThreadPool,有效利用硬件的特性。经调试,5个线程的效果是相当好的。
ThreadPool.SetMaxThreads(
5
,
5
);
ThreadPool.QueueUserWorkItem(WaitCallBack, state);
4、最后别忘记了优化
indexModifier.Flush();
indexModifier.Optimize();
5、使用RAMDirectory并不能带来多少性能改善,MaxBufferedDocs同样也是设置缓存
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
2、使用IndexModifier类,线程安全的。
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3、使用线程池ThreadPool,有效利用硬件的特性。经调试,5个线程的效果是相当好的。
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
ThreadPool.QueueUserWorkItem(WaitCallBack, state);
4、最后别忘记了优化
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
5、使用RAMDirectory并不能带来多少性能改善,MaxBufferedDocs同样也是设置缓存