(Jump to other KnowledgeBases)
DSpace Resources
DSpace Website
DSpace Documentation
DSpace Wiki
DSpace Demo Site
Contribute to KnowledgBase
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
package org.dspace.app.webui.servlet; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.sql.SQLException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.transform.stream.TransformerStreamResult; import javaxorg.xmlapache.transformlog4j.TransformerConfigurationExceptionLogger; import javaxorg.xmldspace.transformauthorize.TransformerExceptionAuthorizeException; import javaxorg.xmldspace.transformcore.TransformerFactoryContext; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.apache.log4j.Logger; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.queryParser.TokenMgrError; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.Sort; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.TopScoreDocCollector; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.dspace.app.webui.util.JSPManager; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; import org.dspace.content.DCValue; import org.dspace.content.Item; import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.LogManager; import org.dspace.handle.HandleManager; import org.dspace.search.CustomQueryParser; import org.dspace.search.DSIndexer; import org.dspace.search.DSQuery; import org.dspace.usage.UsageEvent; import org.dspace.utils.DSpace; public class SearchJSONServlet extends DSpaceServlet { /** log4j category */ private static Logger log = Logger.getLogger(SearchJSONServlet.class); /* Create an DSpaceServlet Servlet */ public SearchJSONServlet() { super(); } protected void doDSPost(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { doDSGet(context, request, response); } protected void doDSGet(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { String pathString = request.getPathInfo(); String queryString = request.getQueryString(); //Build localhost solr query path String scheme = request.getScheme(); // http String serverName = "127.0.0.1"; // Solr can only be accessed from localhost int serverPort = request.getServerPort public class SearchJSONServlet extends DSpaceServlet { private static final long serialVersionUID = 1L; /** log4j category */ private static Logger log = Logger.getLogger(SearchJSONServlet.class); /** * Create an DSpaceServlet Servlet */ public SearchJSONServlet() { super(); } protected void doDSPost(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { doDSGet(context, request, response); } protected void doDSGet(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { String pathString = request.getPathInfo(); String queryString = request.getQueryString(); //Build localhost solr query path String scheme = request.getScheme(); // 80 // http String parentContextPathserverName = "127.0.0.1"; // ChangeSolr thiscan valueonly ifbe dspace webpages are placed in a different folder other than html service root folder accessed from localhost int serverPort = request.getServerPort(); // 80 String contextPath = "/solr"; String servletPath = "/searchJSPUI"; StringBuffer url = new StringBuffer(); url.append(scheme).append("://").append(serverName); if (serverPort != 80) url.append(":").append(serverPort); url.append(parentContextPath).append(contextPath).append(servletPath); url.append(pathString + "?"); url.append(queryString); String solrPath = url.toString(); //Get response from solr server and send it as servlet reponse StringBuilder jsonResponse = new StringBuilder(); URL sorlURL = new URL(solrPath); URLConnection solrConnection = sorlURL.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(solrConnection.getInputStream())); String inputLine; String inputLine; while ((inputLine = in.readLine()) != null) jsonResponse.append(inputLine + "\n"); in.close(); StreamResult result = new StreamResult(response.getOutputStream()); response.setHeader("Content-Length", String.valueOf(jsonResponse.length())); response.getOutputStream().flush(); byte[] buf = jsonResponse.toString().getBytes(); response.setContentLength(buf.length); ServletOutputStream servletOut = response.getOutputStream(); servletOut.write(buf); } } |
This code captures input query string and builds a conformant SOLR query string that is send to SOLR server, it's reponse it's directly returned via result variable to reponse output stream.
...