我试图通过DIH使solr字段的值包含有关XML中父子关系的信息。
这是dataConfig:
<dataConfig>
<script>
<![CDATA[
function doSomething(row){
//logic
return row;
}
]]>
</script>
<dataSource type="URLDataSource"/>
<document>
<entity name="getModels"
pk="id"
url="pathpathpath"
processor="XPathEntityProcessor"
forEach="/path"
transformer="script:doSomething"
>
<field column="spec" xpath="/Group/name/SubGroup" transformer="script:doSomething"/>
<field column = ... />
</entity>
</document>
示例XML:
<Group>
<name>
Vehicle
</name>
<SubGroup>
<name>Car</name>
</SubGroup>
<SubGroup>
<name>Bike</name>
</SubGroup>
</Group>
<Group>
<name>
Fruit
</name>
<SubGroup>
<name>Apple</name>
</SubGroup>
<SubGroup>
<name>Banana</name>
</SubGroup>
</Group>
我将如何指定:
<field column="spec" xpath="/Group/name/SubGroup" transformer="script:doSomething"/>
这样我就可以得到规范的相应实例:
Vehicle Car
和
Vehicle Bike
和
Fruit Apple
和
Fruit Banana
理想情况下,使用名称和子名称之间的分隔符,如:
Fruit::Banana
答案 0 :(得分:0)
找出更好的方法。
我们可以在输入xml上使用XSL转换来预先进行任何必要的格式化。
在这种情况下,xsl将xml转换为solr index ready,例如:
<add>
<doc>
<field name="id">MyID</field>
.....
</doc>
...
</add>
这是data-config.xml
<dataConfig>
<dataSource type="URLDataSource"/>
<document>
<entity name="getModels"
pk="id"
stream="true"
url="pathpathpath"
processor="XPathEntityProcessor"
xsl="path"
forEach="/doc"
useSolrAddSchema="true"
>
<field column="id" xpath="/add/doc/field[@name='id']"/>
...
</entity>
</document>
</dataConfig>
这是一种解决方法,而不是直接的解决方案。但我希望如果有其他人正在经历这一点,这会有所帮助。在线有很少的自定义DIH文档,并且在完成这项工作时遇到了很多麻烦。