用Solr为维基百科编制索引并不';行不通

用Solr为维基百科编制索引并不';行不通,solr,indexing,heap-memory,Solr,Indexing,Heap Memory,我正在尝试索引英文维基百科,大约40Gb,但它不起作用。我已经学习了at的教程和其他相关的Stackoverflow问题,如和 使用教程中介绍的配置,我可以导入wikipedia(简单英语)、大约15万个文档和葡萄牙语wikipedia(超过100万个文档)。当我尝试为英文维基百科(超过800万个文档)编制索引时,问题就出现了。它给出了以下错误: Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException:

我正在尝试索引英文维基百科,大约40Gb,但它不起作用。我已经学习了at的教程和其他相关的Stackoverflow问题,如和

使用教程中介绍的配置,我可以导入wikipedia(简单英语)、大约15万个文档和葡萄牙语wikipedia(超过100万个文档)。当我尝试为英文维基百科(超过800万个文档)编制索引时,问题就出现了。它给出了以下错误:

Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: java.lang.OutOfMemoryError: Java heap space
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:457)
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: java.lang.OutOfMemoryError: Java heap space
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:410)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:231)
    ... 3 more
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: java.lang.OutOfMemoryError: Java heap space
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:539)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:408)
    ... 5 more
Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.apache.lucene.index.ParallelPostingsArray.<init>(ParallelPostingsArray.java:34)
    at org.apache.lucene.index.FreqProxTermsWriterPerField$FreqProxPostingsArray.<init>(FreqProxTermsWriterPerField.java:254)
    at org.apache.lucene.index.FreqProxTermsWriterPerField$FreqProxPostingsArray.newInstance(FreqProxTermsWriterPerField.java:279)
    at org.apache.lucene.index.ParallelPostingsArray.grow(ParallelPostingsArray.java:48)
    at org.apache.lucene.index.TermsHashPerField$PostingsBytesStartArray.grow(TermsHashPerField.java:307)
    at org.apache.lucene.util.BytesRefHash.add(BytesRefHash.java:324)
    at org.apache.lucene.index.TermsHashPerField.add(TermsHashPerField.java:185)
    at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:165)
    at org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:248)
    at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:253)
    at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:453)
    at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1520)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:217)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
    at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:569)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:705)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:435)
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)
    at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:70)
    at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:235)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:504)
    ... 6 more
完全导入失败:java.lang.RuntimeException:java.lang.RuntimeException:org.apache.solr.handler.dataimport.DataImportHandlerException:java.lang.OutOfMemory错误:java堆空间
位于org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
位于org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411)
位于org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476)
位于org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:457)
原因:java.lang.RuntimeException:org.apache.solr.handler.dataimport.DataImportHandlerException:java.lang.OutOfMemory错误:java堆空间
位于org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:410)
位于org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323)
位于org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:231)
... 3个以上
原因:org.apache.solr.handler.dataimport.DataImportHandlerException:java.lang.OutOfMemoryError:java堆空间
位于org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:539)
位于org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:408)
... 还有5个
原因:java.lang.OutOfMemoryError:java堆空间
位于org.apache.lucene.index.ParallelPostingsArray(ParallelPostingsArray.java:34)
位于org.apache.lucene.index.FreqProxTermsWriterPerField$FreqProxPostingsArray。(FreqProxTermsWriterPerField.java:254)
位于org.apache.lucene.index.freqproxtermswriterfield$FreqProxPostingsArray.newInstance(freqproxtermswriterfield.java:279)
位于org.apache.lucene.index.ParallelPostingsArray.grow(ParallelPostingsArray.java:48)
位于org.apache.lucene.index.TermsHashPerField$PostingsBytesStartArray.grow(TermsHashPerField.java:307)
位于org.apache.lucene.util.BytesRefHash.add(BytesRefHash.java:324)
位于org.apache.lucene.index.TermsHashPerField.add(TermsHashPerField.java:185)
位于org.apache.lucene.index.docinverterfield.processFields(docinverterfield.java:165)
位于org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:248)
位于org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:253)
位于org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:453)
位于org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1520)
在org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:217)
位于org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
位于org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
位于org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:569)
在org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:705)上
在org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd上(DistributedUpdateProcessor.java:435)
在org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)上
位于org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:70)
位于org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:235)
位于org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:504)
... 还有6个
我使用的是一台MacBookPro,内存为4Gb,硬盘中的可用空间超过120Gb。我已经尝试更改solrconfig.xml中的256,但到目前为止没有成功

有人能帮我吗

编辑
以防万一,如果有人有同样的问题,我已经使用Cheffe建议的命令
javaxmx1g-jarstar.jar
来解决我的问题。

您的java虚拟机内存不足。给它更多的记忆。就像在这个问题中解释的那样

java-Xmx1024m myprogram

有关
Xmx
参数的更多详细信息,只需搜索
-Xmxsize

以字节为单位指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数且大于2 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。默认值是根据系统配置在运行时选择的。对于服务器部署,-Xms和-Xmx通常设置为相同的值。有关更多信息,请参阅

以下示例说明如何使用各种单位将分配内存的最大允许大小设置为80 MB:

  • Xmx83886080
  • Xmx81920k
  • Xmx80m
-Xmx选项相当于-XX:MaxHeapSize


您的Java虚拟机内存不足。给它更多的记忆。就像在这个问题中解释的那样

java-Xmx1024m myprogram

有关
Xmx
参数的更多详细信息,只需搜索
-Xmxsize

以字节为单位指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数且大于2 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。默认值是根据系统配置在运行时选择的。对于服务器部署,-Xms和-Xmx通常设置为