Hi,
Does Solr 4.0 allows to update the values of multi-valued field? Say I have
list of values for skills field like java, j2ee and i want to change it
to solr, lucene.
I was trying to play with atomic updates and below is my observation:
I have following document in my index:
<doc>
<str name="id">1</str>
<str name="name">Dikchant</str>
<str name="profession">software engineer</str>
<arr name="skills">
<str>java</str>
<str>j2ee</str>
</arr>
</doc>
To update the skills to solr, lucene, I indexed document as follows:
*<add>*
* <doc>*
* <field name="id">1</field>*
* <field name="skills" update="set">solr</field>*
* <field name="skills" update="set">lucene</field>*
* </doc>*
*</add>*
The document added to index is as follows:
*<doc>*
* <str name="id">1</str>*
* <arr name="skills">*
* <str>{set=solr}</str>*
* <str>{set=lucene}</str>*
* </arr>*
*</doc>*
This is not what I was looking for. I found 2 issues:
1. The value of name field was lost
2. The skills fields had some junks like *{set=solr}*
*
*
*
*
Then, to achieve my goal, I tried something different. I tried setting some
single valued field with update="set" parameter to the same value and also
provided the values of multi-valued field as we do while adding new
document.
<add>
<doc>
<field name="id">1</field>
*<field name="name" update="set">Dikchant</field>*
<field name="skills">solr</field>
<field name="skills">lucene</field>
</doc>
</add>
With this the index looks as follows:
<doc>
<str name="id">1</str>
<str name="name">Dikchant</str>
<str name="profession">software engineer</str>
<arr name="skills">
<str>solr</str>
<str>lucene</str>
</arr>
</doc>
The values of multivalued field is changed and value of other field is not
deleted.
The question that comes to my mind is, does Solr 4.0 allows update of
multi-valued field? if yes, is this how it works or am I doing something
wrong?
Regards,
Dikchant