You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Paule LECUYER <le...@bertin.fr> on 2013/11/21 18:03:02 UTC

How to implement a conditional copyField working for partial updates ?

Hello,

I'm using Solr 4.x. In my solr schema I have the following fields defined :

       <field name="content" type="text_general" indexed="false"  
stored="true" multiValued="true" />
       <field name="all" type="text_general" indexed="true"  
stored="false" multiValued="true" termVectors="true" />
       <field name="eng" type="text_en" indexed="true" stored="false"  
multiValued="true" termVectors="true" />
       <field name="ita" type="text_it" indexed="true" stored="false"  
multiValued="true" termVectors="true" />
       <field name="fre" type="text_fr" indexed="true" stored="false"  
multiValued="true" termVectors="true" />
       ...
         <copyField source="content" dest="all"/>

To fill in the language specific fields, I use a custom update  
processor chain, with a custom ConditionalCopyProcessor that copies  
"content" field into appropriate language field, depending on document  
language (as explained in  
http://wiki.apache.org/solr/UpdateRequestProcessor).

Problem is this custom chain is applied on update request document,  
thus it works all right when inserting a new document, or updating the  
whole document, but I lose language specific fields when I do a  
partial update (as those fields are not stored, and as the request  
document contains only updated fields).

I would avoid to set language specific fields to stored="true", as  
"content" field may hold big values.

Is there a way to have solr execute my ConditionalCopyProcessor on the  
actual updated doc (the one resulting from solr retrieving all stored  
values and merging with update request values), and not on the request  
doc ?

Thank a lot for your help.

P. Lecuyer

.