Hi,

 

I have a unique key within my index, but rather than the default
behavour of overwriting I am wondering if there is a method to "merge"
the two different documents on commit of the second document.  I have a
testcase which explains what I'd like to happen:

 

@Test

      public void testMerge() throws SolrServerException, IOException

      {

            SolrInputDocument doc1 = new SolrInputDocument();

            doc1.addField("secid", "testid");

            doc1.addField("value1_i", 1);

            

            SolrAllSec.GetSolrServer().add(doc1);

            SolrAllSec.GetSolrServer().commit();

            

            SolrInputDocument doc2 = new SolrInputDocument();

            doc2.addField("secid", "testid");

            doc2.addField("value2_i", 2);

 

            SolrAllSec.GetSolrServer().add(doc2);

            SolrAllSec.GetSolrServer().commit();

            

            SolrQuery solrQuery = new  SolrQuery();

            solrQuery = solrQuery.setQuery("secid:testid");

            QueryResponse response =
SolrAllSec.GetSolrServer().query(solrQuery, METHOD.GET);

            

            List<SolrDocument> result = response.getResults();

            Assert.isTrue(result.size() == 1);

            Assert.isTrue(result.contains("value1"));

            Assert.isTrue(result.contains("value2"));

      }     

 

Other than reading "doc1" and adding the fields from "doc2" and
recommitting, is there another way?

 

Thanks in advance,

 

Tim

 

Reply via email to