2011-10-20 68 views
0

訪問祖先值的XPath如果我的XML的結構,像這樣:使用Solr DataImportHandler

<fruit> 
<apple appleId="apple_1"> 
<core coreId="core_1"> 
    <seed>1</seed> 
    <seed>2</seed> 
</core> 
</apple> 
<apple appleId="apple_2"> 
<core coreId="core_1"> 
    <seed>1</seed>  
</core> 
</apple> 
</fruit> 

,我希望這些種子能在我的Solr模式的文件,我怎麼能訪問的AppleID和COREID?

下面是從我的數據-config.xml中的相關實體的定義:

<entity name="apples" 
      processor="XPathEntityProcessor" 
      stream="true" 
      forEach="/fruit/apple/core/seed" 
      url="fruit.xml" 
      transformer="script:create_id" 
      > 
    <field column="seed_s" xpath="/fruit/apple/core/seed" /> 
    <field column="apple_id_s" xpath="/fruit/apple/@appleId" /> 
</entity> 

腳本:create_id每個種子創建一個唯一的ID。

在此示例中,apple_id_s將返回爲空。

回答

1

我發現了這個問題。我需要使用commonField =「true」,並確保遍歷每個蘋果和核心。另外,我需要設置觸發solr來存儲文檔的pk =「seed_s」。

這是我的新實體的定義:

<entity name="apples" 
     processor="XPathEntityProcessor" 
     stream="true" 
     pk="seed_s" 
     forEach="/fruit/apple/core/seed | /fruit/apple | /fruit/apple/core" 
     url="fruit.xml" 
     transformer="script:create_id" 
     > 
<field column="seed_s" xpath="/fruit/apple/core/seed" /> 
<field column="apple_id_s" xpath="/fruit/apple/@appleId" commonField="true"/> 
<field column="core_id_s" xpath="/fruit/apple/core/@coreId" commonField="true"/> 

相關問題