9

我正在尝试创建大约 200 万条记录的 lucene。索引时间约为 9 小时。您能否建议如何提高性能?

4

4 回答 4

3

我写了一篇关于如何并行化 Lucene 索引的糟糕文章。它写得真的很糟糕,但你会在这里找到它(你可能想看看一些示例代码)。

无论如何,主要思想是将数据分成相当大的块,然后在单独的线程上处理这些块中的每一个。当每个部分都完成后,您将它们全部合并到一个索引中。

使用上述方法,我可以索引大约 4+ 百万条记录。2小时。

希望这能让你知道从这里去哪里。

于 2009-06-27T04:27:26.320 回答
1

除了写入方面(合并因素)和计算方面(并行化),这有时是由于最简单的原因:输入缓慢。许多人从数据数据库中构建 Lucene 索引。有时您会发现对该数据的特定查询太复杂且太慢,无法快速返回所有(200 万?)记录。只尝试查询并写入磁盘,如果它仍然在 5-9 小时左右,那么您已经找到了一个可以优化的地方(SQL)。

于 2009-06-27T09:12:51.853 回答
1

当我需要加快速度时,以下文章确实对我有所帮助:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

我发现文档构建是我们的主要瓶颈。在优化数据访问并实施其他一些建议后,我能够显着提高索引性能。

于 2009-06-29T15:51:01.643 回答
0

提高 Lucene 的索引性能最简单的方法是调整 IndexWriter 的 mergeFactor 实例变量的值。该值告诉 Lucene 在将它们写入磁盘之前要在内存中存储多少文档,以及将多个段合并在一起的频率。

http://search-lucene.blogspot.com/2008/08/indexing-speed-factors.html

于 2009-06-27T04:09:09.043 回答