Example usage for org.apache.solr.core SolrCore getQueryResponseWriter

List of usage examples for org.apache.solr.core SolrCore getQueryResponseWriter

Introduction

In this page you can find the example usage for org.apache.solr.core SolrCore getQueryResponseWriter.

Prototype

public final QueryResponseWriter getQueryResponseWriter(SolrQueryRequest request) 

Source Link

Document

Returns the appropriate writer for a request.

Usage

From source file:org.eclipse.orion.internal.server.search.SearchServlet.java

License:Open Source License

/**
 * Writes the response to the search query to the HTTP response's output stream.
 *///from w w  w. j  a  v  a2s.  c  om
private void writeResponse(SolrQuery query, HttpServletRequest httpRequest, HttpServletResponse httpResponse,
        QueryResponse queryResponse) throws IOException {
    SolrCore core = SearchActivator.getInstance().getSolrCore();
    //this seems to be the only way to obtain the JSON response representation
    SolrQueryRequest solrRequest = new LocalSolrQueryRequest(core, query.toNamedList());
    SolrQueryResponse solrResponse = new SolrQueryResponse();
    //bash the query in the response to remove user info
    NamedList<Object> params = (NamedList<Object>) queryResponse.getHeader().get("params"); //$NON-NLS-1$
    params.remove(CommonParams.Q);
    params.add(CommonParams.Q, httpRequest.getParameter(CommonParams.Q));
    solrResponse.setAllValues(queryResponse.getResponse());
    QueryResponseWriter writer = core.getQueryResponseWriter("json"); //$NON-NLS-1$
    writer.write(httpResponse.getWriter(), solrRequest, solrResponse);
}

From source file:org.opencms.search.solr.CmsSolrIndex.java

License:Open Source License

/**
 * Writes the Solr response.<p>/*from ww  w .j  av  a  2s.  c o  m*/
 *
 * @param response the servlet response
 * @param queryRequest the Solr request
 * @param queryResponse the Solr response to write
 *
 * @throws IOException if sth. goes wrong
 * @throws UnsupportedEncodingException if sth. goes wrong
 */
private void writeResp(ServletResponse response, SolrQueryRequest queryRequest, SolrQueryResponse queryResponse)
        throws IOException, UnsupportedEncodingException {

    if (m_solr instanceof EmbeddedSolrServer) {
        SolrCore core = ((EmbeddedSolrServer) m_solr).getCoreContainer().getCore(getCoreName());
        Writer out = null;
        try {
            QueryResponseWriter responseWriter = core.getQueryResponseWriter(queryRequest);

            final String ct = responseWriter.getContentType(queryRequest, queryResponse);
            if (null != ct) {
                response.setContentType(ct);
            }

            if (responseWriter instanceof BinaryQueryResponseWriter) {
                BinaryQueryResponseWriter binWriter = (BinaryQueryResponseWriter) responseWriter;
                binWriter.write(response.getOutputStream(), queryRequest, queryResponse);
            } else {
                String charset = ContentStreamBase.getCharsetFromContentType(ct);
                out = ((charset == null) || charset.equalsIgnoreCase(UTF8.toString()))
                        ? new OutputStreamWriter(response.getOutputStream(), UTF8)
                        : new OutputStreamWriter(response.getOutputStream(), charset);
                out = new FastWriter(out);
                responseWriter.write(out, queryRequest, queryResponse);
                out.flush();
            }
        } finally {
            core.close();
            if (out != null) {
                out.close();
            }
        }
    } else {
        throw new UnsupportedOperationException();
    }
}