我目前正在索引维基百科转储(实际上是2012年的,但格式是相同的),并希望了解性能成本(大小和处理时间)。
我正在使用Lucene的Java v4。并将所有转储字段存储在索引中。我在一台拥有i5处理器和8gb内存的机器上工作。我刚刚索引了5000篇文章,创建了一个大小为5GB的索引,耗时大约10分钟。
这意味着对于350万篇文章,它将是一个3.5 TB的索引,如果索引时间是线性的(实际上不是),它将花费我大约5天的时间。我想知道这是否正常,因为原始维基百科转储文件只有35 GB…
我们过去也有同样的问题,我们对此做了很多研究,所以让我和你分享一些事实,我们对此有不同的看法。
首先:关于索引过程的速度,您可以使用多线程解决方案,或者将索引分开到一个类别,您可以设计一个解决方案来同时索引您的文章。
:
1-我们将数据分为类别和子类别,这使得我们可以同时为每个子类别打开单个索引写入器,这使得我们的子类别索引速度提高了x(n)倍。
2-我们设计了一个多线程的方法来索引我们的数据,我们创建了一个固定大小的线程池,这个池中的所有线程使用同一个writer对同一类数据执行索引过程,然后一次提交索引后的数据。
Second:关于索引文件的大小,你无能为力,因为你无法控制它们。Lucene有自己的方法来处理这个文件,所以在这种情况下,我们决定使用Lucene新版本4。