Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-7097

Update other Document in DocTransformer

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      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();

      Attachments

        Activity

          People

            Unassigned Unassigned
            yuanyun.cn jefferyyuan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: