【问题标题】:How do I import the content of .PDF files into a Solr index?如何将 .PDF 文件的内容导入 Solr 索引?
【发布时间】:2018-07-24 14:46:00
【问题描述】:

我有一个 pdf 文件目录:document.01.pdfdocument.02.pdf 等等。我正在运行 Solr 6.6.2。我跑了

solr create -c documents

创建一个名为documents 的核心。我想将 pdf 文件上传到 Solr 并让它索引它们包含的文本,而不仅仅是它们的元数据。

我知道提卡是 Tikka 的工作。我知道solr.extraction.ExtractingRequestHandler 的工作是给 Tikka 打电话。我的solarconfig.xml(这只是solr create 创建的默认值)包含以下部分:

<requestHandler name="/update/extract"
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="fmap.meta">ignored_</str>
      <str name="fmap.content">_text_</str>
    </lst>
  </requestHandler>

如果我跑步

post -c documents path-to-pdf-directory

我最终在索引中找到了包含有关 PDF 文件的元数据的条目和一个 id,它是文件的完整路径,但不是文件内容。我想要的是这些元数据字段加上一个名为 textcontent 之类的附加字段,以包含 PDF 中的文本。

按照here 之类的示例,我也尝试了类似的命令

curl 'http://localhost:8983/solr/documents/update/extract?literal.id=doc1&commit=true' -F "myfile=@document.01.pdf"

但这做同样的事情。

我一直在 searching all over 获取有关如何执行此操作的文档,但我发现的所有内容都表明我做的一切都是正确的。

我该怎么做?这似乎是一种基本功能,以至于它并不明显的事实让我认为我误解了一些基本的东西。

【问题讨论】:

    标签: indexing solr


    【解决方案1】:

    我将ExtractingRequestHandlerfmap.content 的值更改为text_en,因为text_en 在我的托管架构中被列为字段类型,并且我的文档中的文本是英文的。

    <requestHandler name="/update/extract"
                      startup="lazy"
                      class="solr.extraction.ExtractingRequestHandler" >
        <lst name="defaults">
          <str name="lowernames">true</str>
          <str name="fmap.meta">ignored_</str>
          <str name="fmap.content">text_en</str>
        </lst>
      </requestHandler>
    

    现在,当我运行 post 时,我的文档内容与所有其他元数据一起被索引为 text_en 字段。

    【讨论】:

      【解决方案2】:

      您要求 Solr 将所有文本放在名为 _text 的字段中(也带有尾随下划线,我无法在此处显示):

      <str name="fmap.content">_text_</str>
      

      如果您在索引后没有看到这样的字段,请检查您是否在 schema.xml 中定义了这样的字段(具有正确的索引/存储属性)。您不一定需要在 schema.xml 中定义它,它也可以通过 dynamicFields 工作,但为了快速验证只需定义它。

      【讨论】:

      • 在线文档讨论了复制和修改 schema.xml 文件,但在我的 Solr 安装中没有示例 schema.xml 文件。显然,现在 Solr 使用动态生成的“托管模式”。如何将 _text_ 字段添加到其中之一?寻找一个手把手的例子来引导我完成我的第一次。
      • 嗯,当然,您可以使用自定义 schema.xml 或托管模式,谷歌如何从托管模式转移到自定义模式,不难,现在手头不方便抱歉,在赶时间
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2015-06-07
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多