Scott Lindner created SOLR-6045:
-----------------------------------

             Summary: atomic updates w/ solrj + BinaryRequestWriter aren't 
working when adding multiple fields w/ same name in a single SolrInputDocument
                 Key: SOLR-6045
                 URL: https://issues.apache.org/jira/browse/SOLR-6045
             Project: Solr
          Issue Type: Bug
    Affects Versions: 4.8
         Environment: client & server both on 4.8
            Reporter: Scott Lindner


I'm using the following code snippet:

{code}
        HttpSolrServer srvr = new HttpSolrServer("HOST:8983/solr/foo-test");

        SolrInputDocument sid = new SolrInputDocument();
        sid.addField("id", "some_id");
        Map<String, String> fieldModifier = Maps.newHashMap();
        fieldModifier.put("set", "new_value1");
        sid.addField("field1", fieldModifier);
        Map<String, Object> fieldModifier2 = Maps.newHashMap();
        fieldModifier2.put("set", "new_value2");
        sid.addField("field1", fieldModifier2);

        srvr.add(sid);
        srvr.commit();

{code}

*NOTE*: the important part here is that I am using the same field name and 
adding 2 values separately to the same solr document.

This produces the correct values in the index.  Here is the output from 
searching from the admin console:
{noformat}
"field1": [
          "new_value1",
          "new_value2"
        ]
{noformat}

However if I modify the above code to have the following lines after creating 
the SolrServer:

{code}
        srvr.setRequestWriter(new BinaryRequestWriter());
        srvr.setParser(new BinaryResponseParser());
{code}

Then the values that are returned are incorrect:
{noformat}
"field1": [
          "{set=new_value1}",
          "{set=new_value2}"
        ]
{noformat}

This also behaves the same if I use the CloudSolrServer as well.

If I modify my code to look like the following:

{code}
        Map<String, List<String>> fieldModifier = Maps.newHashMap();
        fieldModifier.put("set", Lists.newArrayList("new_value1", 
"new_value2"));
        sid.addField("field1", fieldModifier);
{code}

Then this *does* work with the BinaryRequestWriter.  So this seems to be an 
issue when calling addField() with the same name multiple times.

In the process of debugging this I think I also uncovered a few other similar 
issues but I will file separate bugs for those.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to