Доступ к значениям предка в xpath с помощью Solr DataImportHandler - PullRequest
0 голосов
/ 20 октября 2011

Если мой xml структурирован так:

<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?

Вот подходящее определение сущности из моего data-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>

script: create_id создает уникальный идентификатор для каждого семени.

В этом примере apple_id_s возвращается как ноль.

1 Ответ

1 голос
/ 20 октября 2011

Я нашел проблему. Мне нужно использовать commonField = "true" и убедиться, что циклически проходит через каждое яблоко и ядро. Также мне нужно установить pk = "seed_s", которая запускает solr для хранения документа.

Вот мое новое определение сущности:

<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"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...