有一些PDF文档包含不应由Tika提取的附件(此处为:joboptions)。内容不应发送给Solr。有没有办法在Tika配置中排除某些(或所有)PDF附件?
答案 0 :(得分:2)
@gagravarr,我们通过TIKA-2096,Tika 1.15改变了这种行为。现在默认为"提取所有嵌入文档"。为避免解析嵌入式文档,请调用:
parseContext.set(Parser.class, new EmptyParser())
或者子类EmbeddedDocumentExtractor
什么都不做,并通过ParseContext
发送。
如果您使用的是Solr DIH' TikaEntityProcessor
,我将extractEmbedded
设置为false
,但您不是; {}请不要。 :)
所以,我不认为这是一种简单的方法来关闭仅针对PDF的嵌入式文档的解析,而且我不确定你是否想要。例如,如果有一个MSWord文件附加到PDF怎么办?
如果您想忽略.joboptions
,可以使用自定义EmbeddedDocumentExtractor
。
答案 1 :(得分:1)
实施自定义org.apache.tika.extractor.DocumentSelector
并将其设置为ParseContext
。使用嵌入文档的元数据调用DocumentSelector,以决定是否应该解析嵌入的文档。
示例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());