从 Solr 6.3 升级后,Solr 7.5 无法索引 pdf 文件

Solr 7.5 failing to index pdf files after upgrade from Solr 6.3

我们刚刚从 Solr 6.3 升级到 7.5。在不更改架构或配置的情况下,我们尝试索引的几乎每个 pdf 文件都会出现 400 错误。这些是 Solr 6.3 索引时没有问题的文件。所有其他类型的复杂文件都像以前一样被索引,只是 pdf 文件导致了问题。

线索 #1:在大约 1900 个 pdf 文件中,只有 2 个被成功处理。我们的大多数 pdf 文件都有主题和标题,但是这两个没有。

线索 #2:在控制台日志中,我们看到这样的失败消息:RequestHandlerBaseorg.apache.solr.common.SolrException:未定义的字段:"pdf_docinfo_title"

我在架构中找不到具有该名称的字段。 google 在 pdf_docinfo_title 上的搜索没有找到任何有用的信息。

由于您没有具有该名称的字段,也没有 catch-all 定义,因此当 Tika 返回一个包含字段 pdf_docinfo_title 集的文档时,Solr 会感到厌烦。

由于 Tika 尽可能在 Solr 版本之间升级,因此与 6.3 捆绑的旧版本 Tika 未包含此字段,而与 7.5 捆绑的版本正确提供了它。它代表 pdf 文件的文档标题。

您还可以使用 fmap 参数将字段从 Tika 映射到您的架构中的不同字段:

fmap.<source_field>

Maps (moves) one field name to another. The source_field must be a field in incoming documents, and the value is the Solr field to map to. Example: fmap.content=text causes the data in the content field generated by Tika to be moved to the Solr’s text field.

您还可以使用参数uprefix让Tika模块为所有未知字段添加一个公共前缀:

uprefix

Prefixes all fields that are not defined in the schema with the given prefix. This is very useful when combined with dynamic field definitions. Example: uprefix=ignored_ would effectively ignore all unknown fields generated by Tika given the example schema contains <dynamicField name="ignored_*" type="ignored"/>