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

Reply via email to