我想要一个简单的solr设置,我可以索引和搜索pdf / docx文件的大文件夹。我主要需要全文搜索,不需要将字段分开,原始文档似乎没有明确定义的结构。我遵循https://lucene.apache.org/solr/quickstart.html这很简单,但是,当我尝试使用某些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&update.distrib=TOLEADER&distrib.from=http%3A%2F%2F127.0.1.1%3A8983%2Fsolr%2Fgettingstarted_shard1_replica1%2F&wt=javabin&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
大多数文件都很好,我可以搜索它们。有任何想法吗?
答案 0 :(得分:0)
Solr使用Tika从这些文件中提取文本。某些类型的文件,特别是pdf,很难解析,因为它是一种专有格式,而Tika总是试图赶上边缘情况等。所以一些文件会抛出错误是正常的。你必须期待。
查看找到NumberFormatException / pdfbox的how many instances ...(pdfbox是Tika用于pdf文件的库)。
如果确实想要获取所有pdf中的所有文本,即使是错误的文本,也可以将它们放在一个特殊的文件夹中,然后再用另一个库自己提取文本来处理它们库将具有相同pdf的不同结果,因此您可以使用几个库生成的文本的超集。但是你必须为此编写一些粘合代码,除非Tika允许你为特定的文件类型插入特定的库(不确定它现在是否存在,它之前没有这样做)。