首页 > 解决方案 > 从 Solr 6.3 升级后,Solr 7.5 无法索引 pdf 文件

问题描述

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

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

线索 #2:在控制台日志中,我们看到如下失败消息:RequestHandlerBaseorg.apache.solr.common.SolrException: undefined field: "pdf_docinfo_title"

我在架构中找不到具有该名称的字段。对 pdf_docinfo_title 的谷歌搜索没有发现任何有用的信息。

标签: solrsolr-cell

解决方案


由于您没有具有该名称的字段,并且没有包罗万象的定义,因此当 Tika 将带有该字段pdf_docinfo_title集的文档交还给 Solr 时,Solr 会拒绝。

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

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

fmap.<source_field>

将一个字段名映射(移动)到另一个。source_field 必须是传入文档中的字段,值是要映射到的 Solr 字段。示例:fmap.content=text将 Tika 生成的内容字段中的数据移动到 Solr 的文本字段。

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

uprefix

使用给定前缀为架构中未定义的所有字段添加前缀。这在与动态字段定义结合使用时非常有用。示例:uprefix=ignored_将有效地忽略 Tika 生成的所有未知字段,因为示例模式包含<dynamicField name="ignored_*" type="ignored"/>


推荐阅读