The update processors are only processing the values in the "source" data, not the data that has already been indexed and stored.

We probably need to file a Jira to add an "insert" field value option that merges in the new field value, skipping it if it already exists or appending it to the end of the existing list of field values for a multivalued field.

You could try... a combination of both "remove" and "add", assuming that Solr applies them in the order specified, to remove any existing value and then add it to the end.

See:
https://cwiki.apache.org/confluence/display/solr/Updating+Parts+of+Documents

-- Jack Krupansky

-----Original Message----- From: Tomer Levi
Sent: Monday, November 3, 2014 4:19 AM
To: solr-user@lucene.apache.org ; Ahmet Arslan
Subject: RE: Ignoring Duplicates in Multivalue Field

Hi Ahmet,
When I add the RunUpdateProcessorFactory Solr didn't remove any duplications.
Any other idea?


-----Original Message-----
From: Ahmet Arslan [mailto:iori...@yahoo.com.INVALID]
Sent: Monday, November 03, 2014 1:35 AM
To: solr-user@lucene.apache.org
Subject: Re: Ignoring Duplicates in Multivalue Field

Hi Tomer,

What happens when you add <processor class="solr.RunUpdateProcessorFactory" /> to your chain?

Ahmet



On Sunday, November 2, 2014 1:22 PM, Tomer Levi <tomer.l...@nice.com> wrote:



Hi,
I’m trying to make my “update” request handler ignore multivalue duplications in updates. To make my use case clear, let’s assume my index already contains a document like:
{
  id:”100”,
“myMultValueField”: [“1”,”2”,”3”]
}

Later I would like to send an update like:
{
  id:”100”,”
  myMultValueField” {“add”:”2”}
}

How can I make the update request handler understand that “2” already exist and ignore it?
I tried to add update chain below but it didn’t work for me.

<updateRequestProcessorChain name="uniq-fields">
                  <processor class="solr.UniqFieldsUpdateProcessorFactory">
<str name="fieldRegex"> myMultValueField </str>
                 </processor>
  </updateRequestProcessorChain>

And add it to my requestHandler:
<requestHandler name="/update" class="solr.UpdateRequestHandler">
          <lst name="defaults">
            <str name="update.chain">uniq-fields</str>
          </lst>
   </requestHandler>

Tomer Levi
Software Engineer
Big Data Group
Product & Technology Unit
(T) +972 (9) 775-2693

tomer.l...@nice.com
www.nice.com

Reply via email to