我正在使用 Solr 3.3,我正在尝试从 PDF 文件中提取和索引元数据。我正在使用 DataImportHandler 和 TikaEntityProcessor 来添加文档。这是我的 schema.xml 文件中定义的字段:
<field name="title" type="text" indexed="true" stored="true" multiValued="false"/>
<field name="description" type="text" indexed="true" stored="true" multiValued="false"/>
<field name="date_published" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="link" type="string" indexed="true" stored="true" multiValued="false" required="false"/>
<field name="imgName" type="string" indexed="false" stored="true" multiValued="false" required="false"/>
<dynamicField name="attr_*" type="textgen" indexed="true" stored="true" multiValued="false"/>
所以我想元数据信息应该被索引并存储在前缀为“attr_”的字段中。
这是我的数据配置文件的外观。它从数据库中获取源目录路径,将其传递给 FileListEntityProcessor,FileListEntityProcessor 会将目录中找到的每个 pdf 文件传递给 TikaEntityProcessor 以提取和索引内容。
<entity onError="skip" name="fileSourcePaths" rootEntity="false" dataSource="dbSource" fileName=".*pdf" query="select path from file_sources">
<entity name="fileSource" processor="FileListEntityProcessor" transformer="ThumbnailTransformer" baseDir="${fileSourcePaths.path}" recursive="true" rootEntity="false">
<field name="link" column="fileAbsolutePath" thumbnail="true"/>
<field name="imgName" column="imgName"/>
<entity rootEntity="true" onError="abort" name="file" processor="TikaEntityProcessor" url="${fileSource.fileAbsolutePath}" dataSource="fileSource" format="text">
<field column="resourceName" name="title" meta="true"/>
<field column="Creation-Date" name="date_published" meta="true"/>
<field column="text" name="description"/>
</entity>
</entity>
它可以很好地提取描述和创建日期,但它似乎没有提取资源名称,因此当我查询索引时文档没有标题字段。这很奇怪,因为 Creation-date 和 resourceName 都是元数据。此外,没有其他可能的元数据存储在 attr_ 字段下。我遇到一些线程说使用 Tika 0.8 存在已知问题,所以我下载了 Tika 0.9 并将其替换为 0.8。我还下载并替换了 pdfbox、jempbox 和 fontbox 从 1.3 到 1.4。
我只用 Tika 单独测试了其中一个 pdf,以查看文件中存储了哪些元数据。这是我发现的:
Content-Length: 546459
Content-Type: application/pdf
Creation-Date: 2010-06-09T12:11:12Z
Last-Modified: 2010-06-09T14:53:38Z
created: Wed Jun 09 08:11:12 EDT 2010
creator: XSL Formatter V4.3 MR9a (4,3,2009,1022) for Windows
producer: Antenna House PDF Output Library 2.6.0 (Windows)
resourceName: Argentina.pdf
trapped: False
xmpTPg:NPages: 2
如您所见,它确实有一个 resourceName 元数据。我再次尝试建立索引,但得到了相同的结果。创建日期提取和索引很好,但不是资源名称。其他属性也没有在 attr_ 字段下被索引。
怎么了?