Solr:使用DataImportHandler进行XML导入和XSLT处理
我在配置Solr 4.10.3 DIH以导入XML文件时遇到了严重问题。我试了好几个小时,但运气不好。 以下是我的配置: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"
<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根的相对路径而不是绝对路径李>
您似乎还忘记关闭第二个实体。非常感谢Alexandre的提示。我尝试使用属性dataSource=“null”,并将第二个实体“xml”设置为第一个实体下的嵌套实体。尽管如此,我不太确定这种嵌套的目的是什么,因为这些实体通过名称相互引用。无论如何,我仍然会遇到可怕的FileNotFoundException…请仔细检查外部实体中的数据源。另外,第二个实体表示“datasource”不是datasource,但DIH区分大小写。最后,第二个实体数据源不是第一个实体的名称。它实际上应该是您在顶部实际定义的数据源的名称。除了你没有给它起名字。因此,要么给数据源一个名称并在引用中使用它,要么——因为您只有一个数据源——一起从第二个实体中删除引用。您确实需要嵌套实体,否则它们会创建单独的文档。
java.io.FileNotFoundException: Could not find file: (resolved to: /path/to/my/cores/root/myCoreName/