索引多个文档并映射到唯一的solr id

时间:2012-03-04 20:31:06

标签: pdf solr

我的用例是索引2个文件:元数据文件和二进制PDF文件到唯一的solr id。元数据文件具有XML文件形式的内容,并且一些模式字段映射到该XML文件中的元素。

我的工作:从PDF文件中提取内容(使用pdftotext),处理该内容并检索特定信息(例如:PDF的第一页/行包含有关药物,研究阶段的信息)。检索到的信息(医学/研究阶段)需要编入索引,并且应该能够搜索/排序/分面。

我可以创建一个包含检索信息的XML文件(让我们将其称为元数据文件)。现在假设我的架构是

<field name="medicine" type="text" stored="true" indexed="true"/>
<field name="researchStage". ../>

有没有办法将此元数据文件和PDF文件放在Solr中?

我尝试过:

  1. 根据档案中的建议,我将这些文件压缩并提供给ExtractRequestHandler。我能够将所有内容都放在SOLR中并使其可搜索。但它看起来像是zip文件的内容。(我必须对Solr Code base应用一些补丁才能使其工作)。但这还不够,因为元数据文件中的内容未映射到字段名称。 卷曲“http:// localhost:8983 / solr / update / extract?literal.id = doc1&amp; commit = true”-F“myfile=@file.zip”

  2. 我尝试使用DataImportHandler(binURLdatasource)。但我不认为我理解它是如何运作的。所以不能走远。

  3. 我想过将元数据标签添加到PDF本身。为此,ExtractrequestHandler应处理此元数据。我也不确定。 所以我尝试了“pdftk”来添加元数据。无法为其添加自定义标记。它只更新/添加标题/作者/关键字等。有没有人知道类似的unix工具。

  4. 如果有人有提示,请分享。 我想避免创建1个文件(通过合并PDF文本+元数据文件)。

1 个答案:

答案 0 :(得分:1)

给定文件record1234.pdf和元数据,如:

<metadata>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
</metadata>

程序化等效于

curl "http://localhost:8983/solr/update/extract?
literal.id=record1234.pdf
&literal.field1=value1
&literal.field2=value2
&literal.field3=value3
&captureAttr=true&defaultField=text&capture=div&fmap.div=foo_txt&boost.foo_txt=3&"  -F "tutorial=@tutorial.pdf"

改编自http://wiki.apache.org/solr/ExtractingRequestHandler#Literals

这将在索引中创建一个新条目,其中包含来自Tika / Solr CEL的text输出以及您指定的字段。

您应该能够用自己喜欢的语言执行这些操作。


  

元数据文件中的内容未映射到字段名称

如果它们不映射到预定义字段,则使用动态字段。例如,您可以将*_i设置为整数字段。

  

我想避免创建1个文件(通过合并PDF文本+元数据文件)。

这看起来像程序员疲劳:-)但是,你有充分的理由吗?