2016-11-11 6 views
0

Я пытаюсь загрузить большой объем данных (> 10 м записей) в SOLR.Цепочка обновления обновления, не влияющая на документы, загруженные через дочерние объекты в dataimporthandler

Я хотел разбить запросы на основе определенных значений столбцов и избежать повторения запроса в нескольких объектах с разными предложениями where. Поэтому я решил использовать способность DIH иметь вложенные объекты.

Все работает как ожидалось, за исключением того факта, что поля, заполненные дочерним объектом, не зависят от Процессорных заводов, определенных в UpdateProcessorChain. Обновляются только те поля в родительском объекте. Мой конфигурационный файл данных содержит,

<entity name="nationalSearchResults" onError="skip" 
query="select distinct zip, state, city 
     from table.location 
     where transformer="RegexTransformer"> 
     <field column="ZIP" name="id"/> 
     <field column="STATE" name="state"/> 
     <field column="CITY" name="city"/> 
    <entity child="true" name="nationalSearchResultsByState" onError="skip" 
    query="SELECT b.zip, c.lctn_id, c.restaurants, c.pubs, c.coffeeshops, c.cinemas 
     from table.location b 
     join table.business c on c.zip = b.zip" 
     transformer="script:searchResultsTransformer, RegexTransformer"> 
     <field column="LCTN_ID" name="id"/> 
     <field column="RESTAURANTS" name="restaurants"/> 
     <field column="PUBS" name="pubs"/> 
     <field column="COFFEESHOPS" name="coffeeshops"/> 
     <field column="CINEMAS" name="cinemas"/> 
     <field column="ZIP" name="zip"/> 
    </entity> 
</entity> 

Мой конфигурационный файл Solr имеет,

<updateRequestProcessorChain name="updateOnCommit"> 
<processor class="DistributedUpdateProcessorFactory"/> 

<processor class="TrimFieldUpdateProcessorFactory" /> 
<processor class="RemoveBlankFieldUpdateProcessorFactory" /> 

<!-- To remove duplicate values in a multivalued field--> 
<processor class="UniqFieldsUpdateProcessorFactory"> 
     <str name="fieldRegex">restaurant*</str> 
     <str name="fieldRegex">pub*</str> 
     <str name="fieldRegex">cinema*</str> 
</processor> 
<processor class="solr.LogUpdateProcessorFactory" /> 
<processor class="solr.RunUpdateProcessorFactory" /> <!-- Necessary. Unless explicitly executing update commands in an alternative custom !UpdateRequestProcessorFactory --> 

<requestHandler name="/dataimport" class="DataImportHandler"> 
<lst name="defaults"> 
    <str name="config">data-config.xml</str> 
    <str name="update.chain">updateOnCommit</str> 
</lst> 

ли я что-то отсутствует? Я не могу найти ничего конкретного для updateProcessorChain и дочерних объектов. Ценю вашу помощь. Благодаря!

ответ

1

Цепи URP Solr в настоящее время не влияют на дочерние объекты во вложенных документах. См. SOLR-9477.

Не стесняйтесь добавлять свой пример использования в JIRA в качестве примера того, почему он вам нужен, а также получать уведомление, когда он исправляется.

+0

Я добавил случай использования в качестве комментария к элементу JIRA. Я открою этот вопрос открытым и закрою его, когда будет введено разрешение. – Razen