solr - 从 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 的谷歌搜索没有发现任何有用的信息。
解决方案
由于您没有具有该名称的字段,并且没有包罗万象的定义,因此当 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"/>
推荐阅读
- ruby-on-rails - 如何使用 ruby on rails 中的 axlsx gem 合并 Excel 工作表中的 2 列?
- powerbi - 将总列添加到仅对特定列求和的 Matrix-Visual
- php - 一次包含子文件夹的php文件
- android - 在 Xamarin.forms 中阻止复制粘贴
- java - 使用带有 mongo 和 spring boot 的未确定模式的 querydsl
- android - 在 TabLayout 中自定义选中的选项卡
- swift - 如何在 Swift 'Share App Extension' 中获取附件的(NSItemProvider)文件路径?
- mysql - Mysql过滤表,多个值用分号分隔
- r - 更改 R 中函数的输出
- pandas - Pandas - 减去单独列中位置编号的列