【问题标题】:Lucene 4.2.0 index pdfLucene 4.2.0 索引 pdf
【发布时间】:2013-05-19 22:47:03
【问题描述】:

我正在使用来自 Lucene 4.2.0 演示 API 的示例源代码: http://lucene.apache.org/core/4_2_0/demo/overview-summary.html

我运行 IndexFiles.java 从 rtf、pdf、doc 和 docx 文件的目录创建索引。然后我运行 SearcFiles.java 并注意到我遇到了几个搜索失败的实例,即它没有返回包含我搜索的单词的文档。

我怀疑这与 Lucene 4.2.0 在没有额外自定义的情况下无法正确索引非 .txt 文件有关。

问题:IndexFiles.java 源代码 (Lucene 4.2.0) 能否正确索引 pdf、doc、docx 文件,因为它是在提供的链接中编写的?有没有人有关于如何编写该功能的示例或参考资料?

谢谢

【问题讨论】:

    标签: search pdf lucene indexing .doc


    【解决方案1】:

    不,它不能。 IndexFiles 是一个演示,一个供您学习的示例,但并不是真正为生产使用而设计的。如果你看一下代码,你会发现它只使用了一个 FileInputStream(用 InputStreamReader 包装,用 BufferedReader 包装)。通常,Lucene 不会处理如何解析不同的文件格式(当然,除了它自己的索引文件)。如何解析文件以向 Lucene 提供有意义的内容由您自己定义。

    Apache Tika 可能是寻找此功能的好地方。这是一个简单的example using Tika with Lucene

    你也可以考虑using Solr

    【讨论】:

    • 感谢您的回答。您能否详细说明使用您提请注意的 FileInputStream 流程存在哪些问题?我只需要一个桌面应用程序的 Lucene,我可以通过将它指向用户桌面上的目录来创建可搜索索引。另外,当您说“除了它自己的索引文件”时,我有点困惑。在文件被索引之前不会进行解析吗? Lucene 似乎只处理 .txt 文件。所有其他格式必须首先使用 Tika 之类的方法提取文本。我认为解析本质上是对文档中的单词进行标记。是文本提取解析吗?
    • Lucene 根本不处理文件,真的。该演示处理纯文本文件,但核心 Lucene 不处理。 FileStreamReader 是一个 Java 标准流阅读器,出于您的目的,它只处理纯文本。这适用于 Unix 哲学。 Lucene 索引内容。 Tika 从丰富的文档中提取内容。我添加了几个使用 Tika 的示例的链接,一个直接使用 Lucene,另一个使用 Solr(您可能也想考虑一下)。
    • 谢谢!这些链接很有帮助。我将开始探索蒂卡。我该如何用流阅读器替换代码?我想象使用 Tika 传递一些解析内容的结构......?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多