lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Høydahl <jan....@cominvent.com>
Subject Re: SolrPlugin update existing documents in newSearcher()
Date Thu, 02 May 2019 07:57:46 GMT
Hi

I don't see your requirement clearly. Sounds like what you really need is an UpdateRequestProcessor
where you CAN intercept docs being added and modify them as you wish. https://lucene.apache.org/solr/guide/7_7/update-request-processors.html

--
Jan Høydahl, search solution architect
Cominvent AS - www.cominvent.com

> 1. mai 2019 kl. 22:31 skrev Maria Muslea <maria.muslea@gmail.com>:
> 
> Hi,
> 
> I have a plugin that extends the AbstractSolrEventListener. I override the
> newSearcher() method and the plan is to add some extra functionality,
> namely updating existing documents by setting new values for existing
> fields as well as adding new fields to the documents.
> 
> I can see that the plugin is invoked and I can get the list of documents,
> but I cannot update existing fields or add new fields. I have tried various
> approaches, but I cannot get it to work.
> 
> If you have any suggestions I would really appreciate it. The code that I
> am currently trying is below.
> 
> Thank you,
> Maria
> 
>     for (DocIterator iter = docs.iterator(); iter.hasNext();) {
> 
>        int doci = iter.nextDoc();
> 
>        Document document = newSearcher.doc(doci);
> 
> 
> 
>        SolrInputDocument solrInputDocument1 = new SolrInputDocument();
> 
>        AddUpdateCommand addUpdateCommand1 = new AddUpdateCommand(req);
> 
>        addUpdateCommand1.clear();
> 
>        solrInputDocument1.setField("id", document.get("id"));
> 
>        solrInputDocument1.addField("newfield", "newvalue");
> 
>        solrInputDocument1.setField("existingfield", "value");
> 
>        addUpdateCommand1.solrDoc = solrInputDocument1;
> 
>        getCore().getUpdateHandler().addDoc(addUpdateCommand1);
> 
> 
>        SolrQueryResponse re = new SolrQueryResponse();
> 
>        SolrQueryRequest rq = new LocalSolrQueryRequest(getCore(), new
> ModifiableSolrParams());
> 
>        CommitUpdateCommand commit = new CommitUpdateCommand(rq,false);
> 
>         getCore().getUpdateHandler().commit(commit);
> 
> 
>     }


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message