【问题标题】:Indexing PDF with Solr使用 Solr 索引 PDF
【发布时间】:2011-10-05 09:04:36
【问题描述】:

谁能指点我的教程。

我使用 Solr 的主要经验是索引 CSV 文件。但我找不到任何简单的说明/教程来告诉我索引 pdf 需要做什么。

我看过这个:http://wiki.apache.org/solr/ExtractingRequestHandler

但这对我来说意义不大。我需要安装 Tika 吗?

我迷路了 - 请帮忙

【问题讨论】:

    标签: solr full-text-search solrj apache-tika solr-cell


    【解决方案1】:

    Apache Solr 现在可以索引所有类型的二进制文件,例如 PDF、Words 等...查看此文档:
    https://lucene.apache.org/solr/guide/8_5/uploading-data-with-solr-cell-using-apache-tika.html

    【讨论】:

      【解决方案2】:
      public class SolrCellRequestDemo {
      public static void main (String[] args) throws IOException, SolrServerException {
      SolrClient client = new
      HttpSolrClient.Builder("http://localhost:8983/solr/my_collection").build();
      ContentStreamUpdateRequest req = new
      ContentStreamUpdateRequest("/update/extract");
      req.addFile(new File("my-file.pdf"));
      req.setParam(ExtractingParams.EXTRACT_ONLY, "true");
      NamedList<Object> result = client.request(req);
      System.out.println("Result: " +enter code here result);
      }
      

      这可能会有所帮助。

      【讨论】:

        【解决方案3】:

        使用 solr-4.9(截至目前的最新版本),从 pdf、电子表格(xls、xlxs 系列)、演示文稿(ppt、ppts)、文档(doc、txt 等)等丰富文档中提取数据变得相当简单. 下载的存档中提供的示例代码示例来自 here 包含一个基本的 solr 模板项目,可帮助您快速入门。

        必要的配置更改如下:

        1. 更改solrConfig.xml 以包含以下行:

          <lib dir="<path_to_extraction_libs>" regex=".*\.jar" /> <lib dir="<path_to_solr_cell_jar>" regex="solr-cell-\d.*\.jar" />

        按如下方式创建请求处理程序:

        <requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults" /> </requestHandler>

        2.将必要的 jar 从 solrExample 添加到您的项目中。

        3.根据您的需要定义架构并触发如下查询:

        curl "http://localhost:8983/solr/collection1/update/extract?literal.id=1&literal.filename=testDocToExtractFrom.txt&literal.created_at=2014-07-22+09:50:12.234&commit=true" -F "myfile=@testDocToExtractFrom.txt"

        转到 GUI 门户并查询以查看索引内容。

        如果您遇到任何问题,请告诉我。

        【讨论】:

        • 这已经索引了 pdf 文档,但是当我搜索 pdf 中的内容时,它没有显示任何结果。我们该怎么做?
        【解决方案4】:

        使用 Solr,ExtractingRequestHandler。这使用 Apache-Tika 来解析 pdf 文件。我相信它可以提取元数据等。您也可以通过自己的元数据。 Extracting Request Handler

        【讨论】:

        • 嗨!我正在尝试这个,但是在使用 curl 索引 PDF 文档时出现错误 Error 500 java.lang.NoClassDefFoundError: org/eclipse/jetty/server/MultiParts 有什么想法吗?
        【解决方案5】:

        其中最难的部分是从 PDF 中获取元数据,使用像 Aperture 这样的工具可以简化这一点。这些工具肯定有很多

        Aperture 是一个 Java 框架,用于从 PDF 文件中提取和查询全文内容和元数据

        Apeture 从 PDF 中获取元数据并将其存储在 xml 文件中。

        我使用 lxml 解析了 xml 文件并将它们发布到 solr

        【讨论】:

          【解决方案6】:

          您可以使用 dataImportHandler。 DataImortHandle 将在 solrconfig.xml 中定义,DataImportHandler 的配置应在不同的 XML 配置文件(data-config.xml)中实现

          对于 pdf 的索引,您可以

          1.) 使用FileListEntityProcessor 抓取目录以查找所有pdf

          2.) 从“内容/索引”-XML 文件中读取 pdf,使用 XPathEntityProcessor

          如果您有相关 pdf 的列表,请使用 TikaEntityProcessor 看看这个http://solr.pl/en/2011/04/04/indexing-files-like-doc-pdf-solr-and-tika-integration/(以ppt为例)和这个Solr : data import handler and solr cell

          【讨论】:

          • 是否有可能以某种方式查看 pdf 的解析内容? (我的意思是原始文本)
          • 您可以将内容字段设置为stored = true。如果您在 solr 上搜索文档,您可以打印出存储的字段以进行预览或语法突出显示。
          • 你的意思是这个设置是作为参数还是配置?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-20
          • 1970-01-01
          • 2012-04-13
          • 2012-02-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多