[ https://issues.apache.org/jira/browse/SOLR-7097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14328034#comment-14328034 ]
jefferyyuan commented on SOLR-7097: ----------------------------------- Hi, Noble: In some cases, we may want to change previous documents: add/update/remove fields. Or totally remove previous documents. One use case: in solr group flat mode: group.main=true, and groupCount to the first document in this group: We choose to not change Solr code in our product instead we write a new CachedXMLWriter whose writeSolrDocument caches the SolrDocument, and write all documents out in writeEndDocumentList. http://lifelongprogrammer.blogspot.com/2015/01/use-solr-transformer-to-gen-groupcount.html It would be great if Solr allows us to change previous documents. > Update other Document in DocTransformer > --------------------------------------- > > Key: SOLR-7097 > URL: https://issues.apache.org/jira/browse/SOLR-7097 > Project: Solr > Issue Type: Improvement > Reporter: jefferyyuan > Priority: Minor > Labels: searcher, transformers > > Solr DocTransformer is good, but it only allows us to change current > document: add or remove, update fields. > It would be great if we can update other document(previous especially) , or > better we can delete doc(especially useful during test) or add doc in > DocTransformer. > User case: > We can use flat group mode(group.main=true) to put parent and child close to > each other(parent first), then we can use DocTransformer to update parent > document when access its child document. > Some thought about Implementation: > org.apache.solr.response.TextResponseWriter.writeDocuments(String, > ResultContext, ReturnFields) > when cachMode=true, in the for loop, after transform, we can store the > solrdoc in a list, write these doc at the end. > cachMode = req.getParams().getBool("cachMode", false); > SolrDocument[] cachedDocs = new SolrDocument[sz]; > for (int i = 0; i < sz; i++) { > SolrDocument sdoc = toSolrDocument(doc); > if (transformer != null) { > transformer.transform(sdoc, id); > } > if(cachMode) > { > cachedDocs[i] = sdoc; > } > else{ > writeSolrDocument( null, sdoc, returnFields, i ); > } > > } > if (transformer != null) { > transformer.setContext(null); > } > if(cachMode) { > for (int i = 0; i < sz; i++) { > writeSolrDocument(null, cachedDocs[i], returnFields, i); > } > } > writeEndDocumentList(); -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org