2011-10-20 4 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がnullとして戻ってきます。

答えて

1

問題が見つかりました。私はcommonField = "true"を使用して、各リンゴとコアをループするようにする必要があります。また、私は、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"/> 

関連する問題