我正在尝试创建一个约200万条记录的lucene。索引时间约为9小时。 您能否建议如何提高性能?
答案 0 :(得分:3)
我写了一篇关于如何并行化Lucene索引的可怕帖子。它写得非常糟糕,但你会发现它here(你可能想看一些示例代码)。
无论如何,主要的想法是将数据分成大块,然后在单独的线程上处理每个部分。完成每个部分后,将它们全部合并为一个索引。
通过上述方法,我能够为大约4亿条记录编制索引。 2个小时。
希望这能让你知道从这里开始的去处。
答案 1 :(得分:1)
除了写入侧(合并因子)和计算方面(并行化)之外,这有时是由于最简单的原因:输入缓慢。许多人从数据库中构建Lucene索引。有时您会发现对此数据的特定查询过于复杂且无法快速实际返回所有(200万?)记录。尝试查询并写入磁盘,如果仍然是5-9小时,你就找到了一个优化的地方(SQL)。
答案 2 :(得分:1)
当我需要加快速度时,以下文章真的帮助了我:
http://wiki.apache.org/lucene-java/ImproveIndexingSpeed
我发现文档构建是我们的主要瓶颈。在优化数据访问和实施其他一些建议之后,我能够大幅提高索引性能。
答案 3 :(得分:0)
提高Lucene索引性能的最简单方法是调整IndexWriter的mergeFactor实例变量的值。这个值告诉Lucene在将它们写入磁盘之前要在内存中存储多少文档,以及将多个段合并在一起的频率。
http://search-lucene.blogspot.com/2008/08/indexing-speed-factors.html