Shawn:

thanks, we found an intermediate solution by serializing our data structure
using string representation, perhaps less optimal than using binary format
directly.

In the original router with JavaBinCodec we found, that
BinaryResponseWriter should also be extended. But the following method is
static and does allow extending:

public static NamedList<Object> getParsedResponse(SolrQueryRequest
req, SolrQueryResponse rsp) {
  try {
    Resolver resolver = new Resolver(req, rsp.getReturnFields());

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    new JavaBinCodec(resolver).marshal(rsp.getValues(), out);

    InputStream in = new ByteArrayInputStream(out.toByteArray());
    return (NamedList<Object>) new JavaBinCodec(resolver).unmarshal(in);
  }
  catch (Exception ex) {
    throw new RuntimeException(ex);
  }
}



Shalin:

We needed new data structure in highlighter with more nested levels,
than just one. Something like this (in xml representation):

<lst name="highlighting">
  <lst name="doc1">
    <arr name="snippets">
      <snippet>

         <id>id1</id>

         <contents>Snippet text goes here</contents>

         <other params/>

      </snippet>

    </arr>


  </lst></lst>

Can this be modelled with existing types?


On Thu, Aug 6, 2015 at 9:47 PM, Shalin Shekhar Mangar <
shalinman...@gmail.com> wrote:

> What do you mean by a custom format? As long as your custom component
> is writing primitives or NamedList/SimpleOrderedMap or collections
> such as List/Map, any response writer should be able to handle them.
>
> On Wed, Aug 5, 2015 at 5:08 PM, Dmitry Kan <solrexp...@gmail.com> wrote:
> > Hello,
> >
> > Solr: 5.2.1
> > class: org.apache.solr.common.util.JavaBinCodec
> >
> > I'm working on a custom data structure for the highlighter. The data
> > structure is ready in JSON and XML formats. I need also JavaBin format.
> The
> > data structure is already made serializable by extending the
> WritableValue
> > class (methods write and resolve).
> >
> > To receive the custom format on the client via solrj api, the data
> > structure needs to be parseable by JavaBinCodec. Is this correct
> > assumption? Can we introduce the custom data structure consumer on the
> > solrj api without complete overhaul of the api? Is there plugin framework
> > such that JavaBinCodec is extended and used for the new data structure?
> >
> >
> >
> > --
> > Dmitry Kan
> > Luke Toolbox: http://github.com/DmitryKey/luke
> > Blog: http://dmitrykan.blogspot.com
> > Twitter: http://twitter.com/dmitrykan
> > SemanticAnalyzer: www.semanticanalyzer.info
>
>
>
> --
> Regards,
> Shalin Shekhar Mangar.
>



-- 
Dmitry Kan
Luke Toolbox: http://github.com/DmitryKey/luke
Blog: http://dmitrykan.blogspot.com
Twitter: http://twitter.com/dmitrykan
SemanticAnalyzer: www.semanticanalyzer.info

Reply via email to