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

Indexing 如何将.PDF文件的内容导入Solr索引?,indexing,solr,Indexing,Solr,我有一个pdf文件目录:document.01.pdf、document.02.pdf等等。我正在运行Solr 6.6.2。我跑了 solr create -c documents 创建名为文档的核心。我想把pdf文件上传到Solr,让它索引它们包含的文本,而不仅仅是它们的元数据 我知道提卡的工作就是提取。我知道调用Tikka是solr.extraction.ExtractingRequestHandler的工作。我的solarconfig.xml(这只是由solr create创建的默认设置

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

solr create -c documents
创建名为
文档的核心。我想把pdf文件上传到Solr,让它索引它们包含的文本,而不仅仅是它们的元数据

我知道提卡的工作就是提取。我知道调用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>
最后,索引中的条目包含有关PDF文件的元数据和一个
id
,这是文件的完整路径,但不是文件内容。我想要的是这些元数据字段加上一个名为
text
content
的附加字段,以包含PDF中的文本

在下面的示例中,我还尝试了以下命令

curl 'http://localhost:8983/solr/documents/update/extract?literal.id=doc1&commit=true' -F "myfile=@document.01.pdf"
但这也是同样的道理

我一直在寻找关于如何做到这一点的文档,但我发现的一切都让我觉得我做的一切都是对的


我该怎么做?这似乎是如此基本的功能,事实上它并不明显,这让我觉得我误解了一些基本的东西。

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

<str name="fmap.content">_text_</str>
\u文本_

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

我将
提取请求处理程序
fmap.content
的值更改为
text\u en
,因为
text\u 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\u en
字段。

联机文档谈到复制和修改schema.xml文件,但我的Solr安装中没有schema.xml示例文件。显然,现在Solr使用动态生成的“托管模式”。如何将_text_uu字段添加到其中一个字段?我想找一个牵手的例子来介绍我的第一次经历。啊,当然,你可以使用custom schema.xml或managed schema,谷歌如何从managed schema移动到custom schema,不难,现在手边没有抱歉,很匆忙
<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>