3

我在配置 Solr 4.10.3 DIH 以导入 XML 文件时遇到严重问题。尝试了几个小时,但没有运气。这是我的配置:

<dataConfig>
  <dataSource encoding="UTF-8" 
    type="FileDataSource" basePath="/path/to/my/cores/root/myCoreName/"/>
  <document>
    <entity
        name="pickupdir"
        processor="FileListEntityProcessor"
        rootEntity="false"
        fileName=".*\.xml"
        baseDir="/import"
        recursive="true"
        newerThan="${dataimporter.last_index_time}"
    />

    <entity 
        name="xml"
        processor="XPathEntityProcessor"
        datasource="pickupdir"
        stream="true"
        useSolrAddSchema="true"
        url="${pickupdir.fileAbsolutePath}"
        xsl="solr.xsl"
    />
  </document>
</dataConfig>

XSLT“solr.xls”将 XML 文件转换为 Solr 导入格式,因此我设置了 useSolrAddSchema="true"。但是,当我尝试从浏览器管理控制台运行此数据导入时,我不断收到错误消息:

java.io.FileNotFoundException: Could not find file:  (resolved to: /path/to/my/cores/root/myCoreName/

这里有几件事我不清楚:

  • 错误消息它没有说明它正在寻找哪个文件。
  • 为什么在查找目录时提示“找不到文件”?
  • 如果我正确理解了 dataSource 的“basePath”属性,这将是解析实体元素中给出的相对路径的基础。因此,baseDir“/import”将被解析为“/path/to/my/cores/root/myCoreName/import”。但这似乎没有正确发生。
  • 我将如何配置路径以使用 solr root 的相对路径而不是绝对路径?

也许有人可以向我指出一些使用 XSLT 和 DIH 导入 XML 的工作示例。我想坚持使用 XSLT,因为它已经在工作了(我之前使用 Simple Post Tool 测试过导入)。

干杯,

马丁

4

1 回答 1

0

根据文档,尝试将dataSource="null"属性添加到外部实体。如果没有该属性,它会选择第一个声明的数据源,即您的 FileDataSource。

您似乎也忘记了关闭第二个实体。

于 2015-02-11T04:52:54.563 回答