2013-10-31 63 views
1

我想通过DIH使solr字段的值包含有关父子关系的信息。Concat儿童节点XPathEntityProcessor Solr DIH

这里是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"/> 

所以,我可以有相应的特例c是:

Vehicle Car 

Vehicle Bike 

Fruit Apple 

Fruit Banana 
带有名称和子名称等之间的分隔符

在理想情况下:

Fruit::Banana 
+0

如果您在两个字段中已经存储了“水果”和“香蕉”,则可以使用TemplateTransformer从这些字段值为“spec”列创建新的字段值:https://cwiki.apache.org/confluence /显示/ solr的/上传+结构化数据+ +店铺+数据+带+ +的数据+导入+处理程序#UploadingStructuredDataStoreDatawiththeDataImportHandler-TheTemplateTransformer – Risadinha

回答

0

想出了一个更好的方法。

我们可以在输入xml上使用XSL翻译来事先进行任何必要的格式化。

在这种情况下,在xsl将XML是solr的索引准备例如:

<add> 
    <doc> 
    <field name="id">MyID</field> 
    ..... 
    </doc> 
    ... 

</add> 

这里是数据-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文档很少,并且很难完成这项工作。