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

Solr:使用DataImportHandler进行XML导入和XSLT处理,xml,xslt,solr,dih,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"

我在配置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>
有几件事我不清楚:

  • 错误消息没有说明它要查找的确切文件
  • 为什么它在查找目录时会说“找不到文件”
  • 如果我正确理解dataSource的“basePath”属性,这将是解析entity元素中给出的相对路径的基础。因此,baseDir“/import”将解析为“/path/to/my/cores/root/mycorrename/import”。但这似乎并没有正确地发生
  • 如何配置路径以使用solr根的相对路径而不是绝对路径
也许有人可以给我介绍一些使用XSLT和DIH进行XML导入的工作示例。我想继续使用XSLT,因为它已经在工作了(我以前用Simple Post工具测试过导入)

干杯

Martin

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


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

非常感谢Alexandre的提示。我尝试使用属性dataSource=“null”,并将第二个实体“xml”设置为第一个实体下的嵌套实体。尽管如此,我不太确定这种嵌套的目的是什么,因为这些实体通过名称相互引用。无论如何,我仍然会遇到可怕的FileNotFoundException…请仔细检查外部实体中的数据源。另外,第二个实体表示“datasource”不是datasource,但DIH区分大小写。最后,第二个实体数据源不是第一个实体的名称。它实际上应该是您在顶部实际定义的数据源的名称。除了你没有给它起名字。因此,要么给数据源一个名称并在引用中使用它,要么——因为您只有一个数据源——一起从第二个实体中删除引用。您确实需要嵌套实体,否则它们会创建单独的文档。
java.io.FileNotFoundException: Could not find file:  (resolved to: /path/to/my/cores/root/myCoreName/