您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Lucene改善多线程索引

使用Lucene改善多线程索引

如果要并行化索引,可以执行以下两项操作:

您可以并行处理对addDocuments的调用,但是随着需要索引的文档数量增加,每个文档产生一个线程将无法扩展。您应该使用固定大小的ThreadPoolExecutor。由于此任务主要是cpu密集型(取决于分析仪和检索数据的方式),因此将计算机的cpu数量设置为最大线程数可能是一个不错的开始。

关于合并调度程序,您可以增加可与ConcurrentMergeSchedulersetMaxThreadCount方法一起使用的最大线程数。请注意,磁盘在顺序读取/写入方面比随机读取/写入要好得多,因此,为合并调度程序设置的最大最大线程数可能会降低索引编制的速度,而不是加快索引编制的速度。

但是在尝试并行化索引过程之前,您可能应该尝试找到瓶颈所在。如果磁盘速度太慢,则可能是刷新的瓶颈,因此合并步骤将导致并行调用addDocument(本质上包括分析文档并将分析结果缓存在内存中)不会提高索引速度完全没有

一些注意事项:

Lucene的开发版本中正在进行一些工作,以改善索引并行性(尤其是冲洗部分,此博客文章解释了其工作原理)。

Lucene在如何提高索引速度方面有一个不错的Wiki页面,您将找到其他提高索引速度的方法

其他 2022/1/1 18:26:34 有404人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶