如何将.PDF文件的内容导入Solr索引?

时间:2018-02-14 05:27:11

标签: indexing solr

我有一个pdf文件目录: document.01.pdf document.02.pdf ,依此类推。我正在运行Solr 6.6.2。我跑了

solr create -c documents

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

我知道Tikka的工作就是提取。我知道调用Tikka是solr.extraction.ExtractingRequestHandler的工作。我的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了解有关如何执行此操作的文档,但我发现的所有内容都让我觉得我做的一切都很正确。

我该怎么做?这看起来像是这样的基本功能,事实上并不明显,这让我觉得我误解了一些基本的东西。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

我将fmap.content的{​​{1}}的值更改为ExtractingRequestHandler,因为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字段以及所有其他元数据。