List of usage examples for org.apache.solr.core SolrCore getQueryResponseWriter
public final QueryResponseWriter getQueryResponseWriter(SolrQueryRequest request)
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(); } }