java - SOLR tika 处理器无法完美抓取我的 PDF 文件

标签 java pdf solr apache-tika itextpdf

嗨,SOLR 开发人员,

我有一些 pdf 文件,其中包含一些电路图。电路上有一些垂直书写的文字。例如,在 pdf 中有一个单词“junction connector”,垂直标记在一段电路上,当索引到 SOLR 中时,它变成“j u n c t i o n C o n n e c to or”。

由于显而易见的原因,搜索没有发生在给定的关键字上。是否可以更改底层处理器?

我尝试在独立的 Java 类中使用“itextpdf”将 pdf 转换为文本,并且“itextpdf”打印出足够体面的文本。当我使用“Apache Tika”阅读同一个 pdf 时,我看到很多单词被空格打断,这显然与 SOLR 所做的类似。

例如,是否有可能开发和集成“itextpdf”实体处理器?或任何其他自定义实体处理器?

我最糟糕的替代方法是使用 solrj 并读取 pdf 并为其编制索引,但如前所述,由于环境和设计限制,这将是我最糟糕的替代方法。

使用 SOLR 5.3.1

我现在正在使用 tika 处理器,

<dataConfig>
<dataSource type="BinFileDataSource" />
<document>
    <entity name="tika-test" processor="TikaEntityProcessor"
            url="C:\Users\12345\Downloads\workspace\Playground\circuits.pdf" format="text">
            <field column="Author" name="creator" meta="true"/>
            <field column="title" name="producer" meta="true"/>
            <field column="text" name="text"/>
    </entity>
</document>

SOLR索引文档的方式是这样的,

P o w e r Sou rc e T h e ft D e te rre n t a n d W ire le s s D o o r L o c k C o n tro l Turn Signal Flasher <6 –5 > DHEJ T–O V–R DJF C ombination M eter

最佳答案

最简单(并不是最坏的情况)的方法是自己编写一个小的 itextpdf 提交模块,它扫描一个目录并使用 SolrJ 将提取的文本提交给 Solr。这也将允许将来更轻松地定制和并行化索引过程(在不止一台服务器上运行提取和索引过程)。

无论如何,Tika 提取处理程序可能会在未来的某个时间从 Solr 核心移出并移至单独的索引工具中。

将来有可能编写一个单独的守护进程,您可以向其提交文档并具有不同的索引策略,但尚未完成任何相关工作。

关于java - SOLR tika 处理器无法完美抓取我的 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33292776/

相关文章:

java - 扩展 Java 正则表达式以匹配包含特定字符串的单词

Java:如何替换数组中的字符串元素

java - 在android数据库中插入数据时出现错误

java - 如何使用 Eclipse 在 pdf 中创建波斯语内容

c# - 哪些软件可用于创建服务器端 PDF 文件?

asp.net - 将网页从 HTML 转换为 PDF?

linux - Solr merge 在 amazon ec2 上达到 io 限制

java - ( Hibernate Oracle 无法插入 NULL ) 如何插入自动生成的 ID?

java - 用solr构建标签云

solr - Solr 短语 slop order 是否依赖?