Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr pdf索引请求错误_Pdf_Solr_Lucene_Full Text Indexing - Fatal编程技术网

Solr pdf索引请求错误

Solr pdf索引请求错误,pdf,solr,lucene,full-text-indexing,Pdf,Solr,Lucene,Full Text Indexing,我想有一个简单的solr设置,在那里我可以索引和搜索pdf/docx文件的大文件夹。我主要需要的只是全文搜索,不需要将字段分隔开,而且原始文档似乎没有很好的定义结构。我遵循这一点很简单,但是,当我尝试用一些pdf文件索引我自己的文件夹时,有些文件返回错误,如: POSTing file G1504225.pdf (application/pdf) to [base]/extract SimplePostTool: WARNING: Solr returned an error #400 (Bad

我想有一个简单的solr设置,在那里我可以索引和搜索pdf/docx文件的大文件夹。我主要需要的只是全文搜索,不需要将字段分隔开,而且原始文档似乎没有很好的定义结构。我遵循这一点很简单,但是,当我尝试用一些pdf文件索引我自己的文件夹时,有些文件返回错误,如:

POSTing file G1504225.pdf (application/pdf) to [base]/extract
SimplePostTool: WARNING: Solr returned an error #400 (Bad Request) for 
url: http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf&literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf
SimplePostTool: WARNING: Response: <?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int 
name="QTime">263</int></lst><lst name="error"><lst name="metadata"><str 
name="error-class">org.apache.solr.common.SolrException</str><str 
name="root-error-class">java.lang.NumberFormatException</str><str 
name="error-class">org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException</str><str name="root-error-class">org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException</str></lst><str name="msg">Async exception during distributed update: Error from server at http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1: Bad Request

request: 
http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1/update?update.chain=add-unknown-fields-to-the-schema&amp;update.distrib=TOLEADER&amp;distrib.from=http%3A%2F%2F127.0.1.1%3A8983%2Fsolr%2Fgettingstarted_shard1_replica1%2F&amp;wt=javabin&amp;version=2
Remote error message: ERROR: [doc=/home/solr/solr-6.5.1/../train_data/G1504225.pdf] Error adding field 'title'='United Nations' msg=For input string: "United Nations"</str><int name="code">400</int></lst>
</response> 
SimplePostTool: WARNING: IOException while reading response: 
java.io.IOException: Server returned HTTP response code: 400 for URL: 
http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf&literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf
将文件G1504225.pdf(application/pdf)发布到[base]/extract
SimplePostTool:警告:Solr为返回了错误#400(错误请求)
网址:http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_数据%2FG1504225.pdf和literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_数据%2FG1504225.pdf
SimplePostTool:警告:响应:
400263org.apache.solr.common.SolrExceptionjava.lang.NumberFormatExceptionorg.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesSyncExceptionorg.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesSyncExceptionAsync在分布式更新过程中出现异常:来自服务器的错误http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1: 错误的请求
请求:
http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1/update?update.chain=add-架构的未知字段&;update.distrib=TOLEADER&;distrib.from=http%3A%2F%2F127.0.1.1%3A8983%2Solr%2GettingStarted\u shard1\u replica1%2F&;wt=javabin&;版本=2
远程错误消息:错误:[doc=/home/solr/solr-6.5.1/./train_data/G1504225.pdf]为输入字符串添加字段'title'='United'msg=时出错:“United”400
SimplePostTool:警告:读取响应时发生IOException:
java.io.IOException:服务器返回了URL:
http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_数据%2FG1504225.pdf和literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_数据%2FG1504225.pdf

大多数文件都很好,我可以搜索它们。有什么想法吗

Solr使用Tika从这些文件中提取文本。某些类型的文件,特别是pdf,很难解析,因为它是一种专有格式,Tika总是试图赶上边缘情况等。因此,一些文件会抛出错误是正常的。你必须预料到这一点

请参阅找到的NumberFormatException/pdfbox的编号…(pdfbox是Tika用于pdf文件的库)


如果你真的想从所有pdf中获取所有文本,即使是出错的文本,你可以将它们放在一个特殊的文件夹中,然后再次处理它们,用另一个库自己提取文本,不同的库对同一个pdf会有不同的结果,因此你可以使用多个库生成的文本的超集。但是您必须为此编写一些粘合代码,除非Tika允许您为特定的文件类型插入特定的库(不确定现在是否插入,以前没有这样做)。

谢谢。失败的pdf实际上非常简单,所有相关文本都可以通过pdf2txt轻松提取。此外,错误消息并没有抱怨从pdf中提取数据,而是抱怨将数据插入solr,但我可能会错过一些东西。无论如何,只要用pdf2txt将所有的pdf-s转换成txt,然后建立索引就可以了,这是我目前的快速技巧。