Tika 解析器:排除 PDF 附件
Tika Parser: Exclude PDF Attachments
有一个 PDF 文档包含不应由 Tika 提取的附件(此处为:joboptions)。不应将内容发送到 Solr。有没有办法在 Tika 配置中排除某些(或所有)PDF 附件?
@gagravarr,我们通过 TIKA-2096、Tika 1.15 更改了该行为。现在默认为 "extract all embedded documents"。为避免解析嵌入式文档调用:
parseContext.set(Parser.class, new EmptyParser())
或子类 EmbeddedDocumentExtractor
不执行任何操作并通过 ParseContext
发送。
如果您使用的是 Solr DIH 的 TikaEntityProcessor
,我会将 extractEmbedded
设置为 false
,但您没有;请不要。 :)
所以,我不认为有一种简单的方法可以关闭仅对 PDF 的嵌入式文档的解析,而且我不确定您是否愿意这样做。例如,如果 PDF 附有 MSWord 文件怎么办?
如果您想忽略 .joboptions
,您可以使用自定义 EmbeddedDocumentExtractor
。
实施自定义 org.apache.tika.extractor.DocumentSelector
并将其设置在 ParseContext
。使用嵌入文档的元数据调用 DocumentSelector 以决定是否应解析嵌入文档。
文档选择器示例:
public class CustomDocumentSelector implements DocumentSelector {
@Override
public boolean select(Metadata metadata) {
String resourceName = metadata.get(Metadata.RESOURCE_NAME_KEY);
return resourceName == null || !resourceName.endsWith(".joboptions");
}
}
在 ParseContext 中注册:
parseContext.set(DocumentSelector.class, new CustomDocumentSelector());
有一个 PDF 文档包含不应由 Tika 提取的附件(此处为:joboptions)。不应将内容发送到 Solr。有没有办法在 Tika 配置中排除某些(或所有)PDF 附件?
@gagravarr,我们通过 TIKA-2096、Tika 1.15 更改了该行为。现在默认为 "extract all embedded documents"。为避免解析嵌入式文档调用:
parseContext.set(Parser.class, new EmptyParser())
或子类 EmbeddedDocumentExtractor
不执行任何操作并通过 ParseContext
发送。
如果您使用的是 Solr DIH 的 TikaEntityProcessor
,我会将 extractEmbedded
设置为 false
,但您没有;请不要。 :)
所以,我不认为有一种简单的方法可以关闭仅对 PDF 的嵌入式文档的解析,而且我不确定您是否愿意这样做。例如,如果 PDF 附有 MSWord 文件怎么办?
如果您想忽略 .joboptions
,您可以使用自定义 EmbeddedDocumentExtractor
。
实施自定义 org.apache.tika.extractor.DocumentSelector
并将其设置在 ParseContext
。使用嵌入文档的元数据调用 DocumentSelector 以决定是否应解析嵌入文档。
文档选择器示例:
public class CustomDocumentSelector implements DocumentSelector {
@Override
public boolean select(Metadata metadata) {
String resourceName = metadata.get(Metadata.RESOURCE_NAME_KEY);
return resourceName == null || !resourceName.endsWith(".joboptions");
}
}
在 ParseContext 中注册:
parseContext.set(DocumentSelector.class, new CustomDocumentSelector());