2013-10-31 100 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文檔很少,並且很難完成這項工作。