我目前正在索引维基百科转储(实际上是2012年的一个,但无论格式是否相同),并希望了解性能成本(大小和处理时间)。
我正在使用Lucene for Java v4.x并将所有转储字段存储在索引中。我在配备i5处理器和8 GB RAM的机器上工作。我刚刚完成索引5000篇文章,这些文章创建了一个大小为5GB的索引,花了大约10分钟。
这意味着对于350万篇文章,它将是一个3.5 TB的索引,如果索引时间是线性的(它不是),它将花费我大约5天。我想知道这是否正常,因为原始的Wikipedia转储文件只有35 GB ...
答案 0 :(得分:1)
我们过去常常遇到同样的问题,我们对此进行了很多研究,所以让我与大家分享一下我们面临的一些事实。
首先:关于索引编制过程的速度,您可以使用多线程解决方案,或将索引与类别分开,您可以设计一个解决方案来同时索引文章。
<强>实施例强>:
1 - 我们将数据分为类别和子类别,这使我们可以同时为每个子类别打开一个索引编写器,这使索引的速度加倍x (n)我们的子类别。
2 - 我们设计了一个多线程解决方案来索引我们的数据,我们创建了一个固定大小的线程池,这个池中的所有线程使用相同的编写器来对同一类别执行索引处理数据,然后立即提交索引数据。
第二:关于索引文件大小,你无能为力,因为你无法控制它们。 lucene有办法处理文件,所以在这种情况下我们决定使用lucene新版本4.x,它的尺寸增强了大约60%。