Solr:使用DataImportHandler进行XSLT处理的XML导入

时间:2015-02-10 19:37:20

标签: xml xslt solr dih

我在配置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根而不是绝对路径的路径?

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

干杯,

马丁

1 个答案:

答案 0 :(得分:0)

根据the documentation,尝试将 dataSource =“null”属性添加到外部实体。如果没有该属性,它将获取声明的第一个数据源,即FileDataSource。

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