Solr 索引在发布文件时引发错误

Solr indexing raises error while posting file

我正在使用 Solr 6.4.1 版本并且我最近post将大约 1000 个文件编辑到 solr 以进行索引。我在 Windows 10 中使用 Windows Powershell 到 post 使用命令的文件。

PS C:\solr-6.4.1> java -Dc=Solr_sample -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar E:\Test\

但我发现其中有一个文件未编入索引,我尝试再次使用以下命令为该特定文件编入索引,但没有成功。该文件的大小为 212MB。我附上了错误和下面的所有内容。你能帮我 post 将这个文件添加到 Solr 索引中吗?

PS C:\solr-6.4.1> java -Dc=Solr_sample -Dauto=yes -Ddata=files -Drecursive=yes -jar example/exampledocs/post.jar E:\Test\C0000000045\
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/Solr_sample/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
Entering recursive mode, max depth=999, delay=0s
Indexing directory E:\Test\C0000000045 (1 files, depth=0)
POSTing file 20162436739-Spheres Volume 3 Foams Plural Spherology. Peter Sloterdijk. MIT.pdf (application/pdf) to [base]/extract
SimplePostTool: WARNING: Solr returned an error #500 (Server Error) for url: http://localhost:8983/solr/Solr_sample/update/extract?resource.name=E%3A%5CTest%5CC0000000045%5C20162436739-Spheres+Volume+3+Foams+Plural+Spherology.+Peter+Sloterdijk.+MIT.pdf&literal.id=E%3A%5C
Test%5CC0000000045%5C20162436739-Spheres+Volume+3+Foams+Plural+Spherology.+Peter+Sloterdijk.+MIT.pdf
SimplePostTool: WARNING: Response: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 Server Error</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /solr/Solr_sample/update/extract. Reason:
<pre>    Server Error</pre></p><h3>Caused by:</h3><pre>java.lang.OutOfMemoryError: Java heap space
        at java.io.PushbackInputStream.&lt;init&gt;(Unknown Source)
        at org.apache.pdfbox.pdfparser.InputStreamSource.&lt;init&gt;(InputStreamSource.java:39)
        at org.apache.pdfbox.pdfparser.PDFObjectStreamParser.&lt;init&gt;(PDFObjectStreamParser.java:55)
        at org.apache.pdfbox.pdfparser.COSParser.parseObjectStream(COSParser.java:821)
        at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:727)
        at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:652)
        at org.apache.pdfbox.pdfparser.COSParser.parseDictObjects(COSParser.java:612)
        at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:215)
        at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:249)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:972)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:908)
        at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:131)
        at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
        at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
        at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120)
        at org.apache.solr.handler.extraction.ExtractingDocumentLoader.load(ExtractingDocumentLoader.java:228)
        at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:166)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2306)
        at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:658)
        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:464)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:345)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:296)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1691)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
</pre>

</body>
</html>
SimplePostTool: WARNING: IOException while reading response: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8983/solr/Solr_sample/update/extract?resource.name=E%3A%5CTest%5CC0000000045%5C20162436739-Spheres+Volume+3+Foams+Plural+Sp
herology.+Peter+Sloterdijk.+MIT.pdf&literal.id=E%3A%5CTest%5CC0000000045%5C20162436739-Spheres+Volume+3+Foams+Plural+Spherology.+Peter+Sloterdijk.+MIT.pdf
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/Solr_sample/update...
Time spent: 0:00:13.795

jvm 运行 内存不足,因为您没有明确设置堆大小,jvm 使用默认值。从 pdf 中提取文本可能会占用大量 ram,因此您可以尝试尽可能多地提供 Solr(请注意,对于这种特殊情况,不是一般的 Solr 使用),因此请使用更多 ram 启动 solr。这取决于您现在如何启动它,如果您使用的是内置服务,请编辑 solr.in.sh 和 uncomment/modify 这一行

#SOLR_JAVA_MEM="-Xmx8g-Xmx8g"

如果您有 8gb 免费使用(根据您的情况调整)

从其他回答,我才知道错误是因为内存,但下面的命令解决了我的问题。

PS C:\solr-6.4.1> bin\solr start -m 4g

我将 Solr 内存增加到 4 GB,这解决了我的问题。

或者,我们也可以使用以下参数在 Windows Task Scheduler 上创建一个任务到 运行 Solr: