List of usage examples for org.apache.solr.request SolrQueryRequest getOriginalParams
SolrParams getOriginalParams();
From source file:com.search.MySearchHandler.java
License:Apache License
@Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { // int sleep = req.getParams().getInt("sleep",0); // if (sleep > 0) {log.error("SLEEPING for " + sleep); // Thread.sleep(sleep);} /*** Pre-processing of the Query by REGEX starts here -------------- ***/ SolrParams originalParams = req.getOriginalParams(); SolrParams psuedoParams = req.getParams(); // These psuedoParams keep // changing/*ww w .j a v a 2 s. c om*/ if (originalParams.get(CommonParams.Q) != null) { String finalQuery; String originalQuery = originalParams.get(CommonParams.Q); rsp.add("Original query", originalQuery); SchemaField keyField = null; keyField = req.getCore().getLatestSchema().getUniqueKeyField(); if (keyField != null) { fieldSet.add(keyField.getName()); } /*** * START CODE TO PARSE QUERY * * Arafath's code to prepare query starts here The query should be * in the following format -> * * * * Example : Original Query: * "Which musical object did russ conway play" Temporary Query : * "relations:instrument AND entity:enty" // Generate the relation * Final Query : "name:"russ conway" AND occupation:musician" */ ParsedQuestion parsedq = new ParsedQuestion(); parsedq = parseQues(originalQuery); if (parsedq != null) { System.out.println(parsedq); Map<Integer, String> relationstr = getRelation(parsedq.getRelationKeyWord(), parsedq.getWhtype(), req); /** * END CODE TO PARSE QUERY */ /*** Final Phase starts here ***/ finalQuery = "title:\"" + parsedq.getSearchName() + "\""; NamedList finalparamsList = req.getParams().toNamedList(); finalparamsList.setVal(finalparamsList.indexOf(CommonParams.Q, 0), finalQuery); psuedoParams = SolrParams.toSolrParams(finalparamsList); if (psuedoParams.get(CommonParams.SORT) == null) { finalparamsList.add(CommonParams.SORT, "score desc"); } else { finalparamsList.setVal(finalparamsList.indexOf(CommonParams.SORT, 0), "score desc"); } int documentsRetrieved = 0; if (relationstr != null) { rsp.add("total relations retrieved", relationstr.size()); rsp.add("relations", relationstr); NamedList finaldocresults = new NamedList(); NamedList forwarddocresults = new NamedList(); Set<String> checkDocuments = new HashSet<String>(); for (int i = 0; i < relationstr.size() && (documentsRetrieved < 10); i++) { NamedList relationdocresults = new NamedList(); String desiredField = relationstr.get(i); Set<String> tempFieldSet = new HashSet<String>(); int docsRetrievedforThisRelation = 0; tempFieldSet.add(desiredField); psuedoParams = SolrParams.toSolrParams(finalparamsList); if (psuedoParams.get(CommonParams.FL) == null) { finalparamsList.add(CommonParams.FL, desiredField); } else { finalparamsList.setVal(finalparamsList.indexOf(CommonParams.FL, 0), desiredField); } SolrQueryRequest finalreq = new LocalSolrQueryRequest(req.getCore(), finalparamsList); rsp.add("Final Query", finalreq.getParams().get(CommonParams.Q)); SolrQueryResponse finalrsp = new SolrQueryResponse(); ResponseBuilder finalrb = new ResponseBuilder(finalreq, finalrsp, components); for (SearchComponent c : components) { c.prepare(finalrb); c.process(finalrb); } DocList finaldocs = finalrb.getResults().docList; if (finaldocs == null || finaldocs.size() == 0) { log.debug("No results"); // support for reverse query } else { DocIterator finaliterator = finaldocs.iterator(); Document finaldoc; for (int j = 0; j < finaldocs.size(); j++) { try { if (finaliterator.hasNext()) { int finaldocid = finaliterator.nextDoc(); finaldoc = finalrb.req.getSearcher().doc(finaldocid, tempFieldSet); if (!checkDocuments.contains(finaldoc.get("id"))) { if (finaldoc.get(desiredField) != null) { checkDocuments.add(finaldoc.get("id")); docsRetrievedforThisRelation++; documentsRetrieved++; relationdocresults.add(finaldoc.get("title"), finaldoc); if (documentsRetrieved >= 10) { break; } } } } } catch (IOException ex) { java.util.logging.Logger.getLogger(MySearchHandler.class.getName()) .log(Level.SEVERE, null, ex); } } if (docsRetrievedforThisRelation > 0) { rsp.add("docs retrieved for : " + desiredField, docsRetrievedforThisRelation); forwarddocresults.add(desiredField, relationdocresults); } } finalreq.close(); if (documentsRetrieved > 0) { rsp.add("type", "forward"); rsp.add("final results", forwarddocresults); } } if (documentsRetrieved == 0) { NamedList reversedocresults = new NamedList(); relationstr = getRelationReverse(parsedq.getRelationKeyWord(), req); System.out.println(relationstr); StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46); String reversequery = ""; for (int i = 0; i < relationstr.size(); i++) { QueryParser relationsparser = new QueryParser(Version.LUCENE_46, relationstr.get(i), analyzer); try { reversequery += relationsparser.parse(parsedq.getSearchName()).toString() + " "; } catch (ParseException e) { e.printStackTrace(); } } QueryParser relationsparser = new QueryParser(Version.LUCENE_46, "infotype", analyzer); reversequery += relationsparser.parse(parsedq.getWhtype().firstKey().toLowerCase()); NamedList reverseList = req.getParams().toNamedList(); psuedoParams = SolrParams.toSolrParams(reverseList); reverseList.setVal(reverseList.indexOf(CommonParams.Q, 0), reversequery); SolrQueryRequest reversereq = new LocalSolrQueryRequest(req.getCore(), reverseList); SolrQueryResponse reversersp = new SolrQueryResponse(); ResponseBuilder reverserb = new ResponseBuilder(reversereq, reversersp, components); for (SearchComponent c : components) { try { c.prepare(reverserb); c.process(reverserb); } catch (IOException ex) { java.util.logging.Logger.getLogger(MySearchHandler.class.getName()) .log(Level.SEVERE, null, ex); } } DocList reversedocs = reverserb.getResults().docList; if (reversedocs == null || reversedocs.size() == 0) { log.debug("No results"); // GET SECOND entry from WHTYPE .. search with that .. } else { // NamedList docresults = new NamedList(); DocIterator reverseiterator = reversedocs.iterator(); Document reversedoc; int docScore = 0; for (int m = 0; m < reversedocs.size(); m++) { try { int reversedocid = reverseiterator.nextDoc(); reversedoc = reverserb.req.getSearcher().doc(reversedocid, fieldSet); if (reversedoc.get("title") != null) { documentsRetrieved++; reversedocresults.add(reversedoc.get("title"), reversedoc); if (documentsRetrieved >= 10) { break; } } } catch (IOException ex) { java.util.logging.Logger.getLogger(MySearchHandler.class.getName()) .log(Level.SEVERE, null, ex); } } } if (documentsRetrieved == 0) { rsp.add("message", "No Results found. Try another query!"); } else { rsp.add("type", "reverse"); rsp.add("final results", reversedocresults); } reversereq.close(); } } else { if (documentsRetrieved == 0) { rsp.add("message", "No Results found. Please rephrase the query!"); } } } else { rsp.add("message", "This is not a valid query!"); } } else { rsp.add("message", "User should provide at least one word as a query!"); } }
From source file:com.search.MySearchHandlerTest.java
License:Apache License
@Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { // int sleep = req.getParams().getInt("sleep",0); // if (sleep > 0) {log.error("SLEEPING for " + sleep); Thread.sleep(sleep);} /*** Pre-processing of the Query by REGEX starts here --------------***/ SolrParams originalParams = req.getOriginalParams(); SolrParams psuedoParams = req.getParams(); // These psuedoParams keep changing if (originalParams.get(CommonParams.Q) != null) { String finalQuery;// w ww . j ava2 s . c om String originalQuery = originalParams.get(CommonParams.Q); rsp.add("Original query", originalQuery); /*** Arafath's code to prepare query starts here * The query should be in the following format -> * Example : * Original Query: "Which musical object did russ conway play" * Temporary Query : "relations:instrument AND entity:enty" // Generate the relation * Final Query : "name:"russ conway" AND occupation:musician" */ String tempQuery = "relations:instrumental AND entity:enty"; rsp.add("Temporary query", tempQuery); String desiredField = null; Set<String> fieldSet = null; SchemaField keyField = null; NamedList tempparamsList = req.getParams().toNamedList(); tempparamsList.setVal(tempparamsList.indexOf(CommonParams.Q, 0), tempQuery); psuedoParams = SolrParams.toSolrParams(tempparamsList); // if (psuedoParams.get(CommonParams.SORT) == null) { // tempparamsList.add(CommonParams.SORT, "score desc"); // } else { // tempparamsList.setVal(tempparamsList.indexOf(CommonParams.SORT, 0), "score desc"); // } SolrQueryRequest firstreq = new LocalSolrQueryRequest(req.getCore(), tempparamsList); SolrQueryResponse firstrsp = new SolrQueryResponse(); firstrsp.setAllValues(rsp.getValues()); ResponseBuilder firstrb = new ResponseBuilder(firstreq, firstrsp, components); for (SearchComponent c : components) { c.prepare(firstrb); c.process(firstrb); } rsp.add("response", firstrb.getResults().docList); /*** DocList docs = firstrb.getResults().docList; if (docs == null || docs.size() == 0) { log.debug("No results"); } else { fieldSet = new HashSet <String> (); keyField = firstrb.req.getCore().getLatestSchema().getUniqueKeyField(); if (keyField != null) { fieldSet.add(keyField.getName()); } fieldSet.add("fieldid"); fieldSet.add("relations"); fieldSet.add("entity"); fieldSet.add("count"); NamedList docresults = new NamedList(); DocIterator iterator = docs.iterator(); Document doc; int docScore = 0; rsp.add("doc retrieved ", docs.size()); for (int i=0; i<docs.size(); i++) { try { int docid = iterator.nextDoc(); doc = firstrb.req.getSearcher().doc(docid, fieldSet); if (Integer.parseInt(doc.get("count")) > docScore) { docScore = Integer.parseInt(doc.get("count")); desiredField = doc.get("fieldid"); } docresults.add(String.valueOf(docid), doc); } catch (IOException ex) { java.util.logging.Logger.getLogger(CustomQueryComponent.class.getName()).log(Level.SEVERE, null,ex); } } fieldSet.clear(); rsp.add("Intermediate results", docresults); if (desiredField != null) { rsp.add("Required Field", desiredField); } } ***/ firstreq.close(); /*** Final Phase starts here ***/ /*** finalQuery = "name:\"russ conway\" AND occupation:musician"; NamedList finalparamsList = req.getParams().toNamedList(); finalparamsList.setVal(finalparamsList.indexOf(CommonParams.Q, 0), finalQuery); psuedoParams = SolrParams.toSolrParams(finalparamsList); if (psuedoParams.get(CommonParams.SORT) == null) { finalparamsList.add(CommonParams.SORT, "score desc"); } else { finalparamsList.setVal(finalparamsList.indexOf(CommonParams.SORT, 0), "score desc"); } // if (desiredField != null) { // if (psuedoParams.get(CommonParams.FL) != null) { // finalparamsList.setVal(finalparamsList.indexOf(CommonParams.FL, 0), desiredField); // } else { // finalparamsList.add(CommonParams.FL, desiredField); // } // } SolrQueryRequest finalreq = new LocalSolrQueryRequest(req.getCore(), finalparamsList); rsp.add("Final Query", finalreq.getParams().get(CommonParams.Q)); ResponseBuilder rb = new ResponseBuilder(finalreq,rsp,components); for (SearchComponent c : components) { c.prepare(rb); c.process(rb); } ***/ /*** testing DocList finaldocs = rb.getResults().docList; if (finaldocs == null || finaldocs.size() == 0) { log.debug("No results"); } else { keyField = rb.req.getCore().getLatestSchema().getUniqueKeyField(); if (keyField != null) { fieldSet.add(keyField.getName()); } if (desiredField != null) { fieldSet.add(desiredField); } fieldSet.add("name"); NamedList finaldocresults = new NamedList(); DocIterator finaliterator = finaldocs.iterator(); Document finaldoc; rsp.add("finaldocs retrieved ", finaldocs.size()); for (int i=0; i<docs.size(); i++) { try { if (finaliterator.hasNext()) { int finaldocid = finaliterator.nextDoc(); finaldoc = rb.req.getSearcher().doc(finaldocid, fieldSet); finaldocresults.add(String.valueOf(finaldocid), finaldoc); } } catch (IOException ex) { java.util.logging.Logger.getLogger(MySearchHandler.class.getName()).log(Level.SEVERE, null,ex); } } rsp.add("final results", finaldocresults); } ***/ // finalreq.close(); } else { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Need to give at least one word as query!"); } }
From source file:net.sr_sl.solr.ssq.SsqQueryComponent.java
License:Apache License
/** * Modify the query parameters// w ww .j a va 2 s .c o m */ private boolean modifyQueryRequest(ResponseBuilder rb) throws IOException { SolrQueryRequest req = rb.req; SolrParams params = req.getParams(); // check whether server side queries is active for this request if (!params.getBool(SSQ_PREFIX, false)) return false; // get parameters to use String ssqQuery = params.get(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERY)); String ssqParam = params.get(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_PARAM), SSQ_PARAM_DFT); // when ssqQuery or ssqParam is not set, don't modify if (ssqQuery == null || ssqQuery.isEmpty() || ssqParam.isEmpty()) return false; // Get original value for ssqParam and return when already set String ssqParamVal = params.get(ssqParam); if (ssqParamVal != null && !ssqParamVal.isEmpty()) return false; // Get original query string value String origQueryString = rb.getQueryString(); String origQVal = req.getOriginalParams().get(CommonParams.Q); // Retrieve value to use as query-term; when empty, use q.alt String qVal = origQVal; if (qVal == null || qVal.isEmpty()) { String alt_q = params.get(DisMaxParams.ALTQ); if (alt_q != null && !alt_q.isEmpty()) { qVal = alt_q; } } // Get value for ssqQuery String ssqQueryVal = params .get(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERY).concat(SSQ_DELIM).concat(ssqQuery)); // When value not found, assume that ssqQuery is the query to execute // per default if (ssqQueryVal == null || ssqQueryVal.isEmpty()) ssqQueryVal = ssqQuery; // Perform replacement ModifiableSolrParams mparams = new ModifiableSolrParams(); // Set flag to indicate that replacement is performed mparams.set(SSQ_PREFIX.concat(SSQ_APPLIED_SUFFIX), Boolean.toString(true)); // Store original querystring when <> q if (origQVal != null && !origQVal.equals(origQueryString)) mparams.set(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERYSTRING).concat(SSQ_APPLIED_SUFFIX), origQueryString); // Perform the switch (qVal --> ssqParam) mparams.set(ssqParam, qVal); mparams.set(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERY).concat(SSQ_APPLIED_SUFFIX), ssqQueryVal); // set the extra parameters req.setParams(SolrParams.wrapAppended(req.getParams(), mparams)); // set queryString to query rb.setQueryString(ssqQueryVal); return true; }
From source file:net.sr_sl.solr.ssq.SsqQueryComponent.java
License:Apache License
/** * Restore the query parameters Restore queryString and reset original q (to * ensure further components will be processed correctly) *///ww w . j a v a 2 s .com private boolean restoreQueryRequest(ResponseBuilder rb) { SolrQueryRequest req = rb.req; SolrParams params = req.getParams(); // check whether server side queries is active for this request if (!params.getBool(SSQ_PREFIX, false)) return false; // check whether values where replaced if (!params.getBool(SSQ_PREFIX.concat(SSQ_APPLIED_SUFFIX), false)) return false; // retrieve original queryString and q String queryString = params .get(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERYSTRING).concat(SSQ_APPLIED_SUFFIX)); boolean useStoredQueryString = (queryString != null && queryString.isEmpty()); // remove flag that was possibly set to store original queryString if (!useStoredQueryString) { ModifiableSolrParams mparams = new ModifiableSolrParams(params); mparams.remove(SSQ_PREFIX.concat(SSQ_DELIM).concat(SSQ_QUERYSTRING).concat(SSQ_APPLIED_SUFFIX)); req.setParams(mparams); } else { queryString = req.getOriginalParams().get(CommonParams.Q); } // set queryString to original query rb.setQueryString(queryString); return true; }
From source file:net.yacy.cora.federate.solr.connector.EmbeddedSolrConnector.java
License:Open Source License
public SolrQueryResponse query(SolrQueryRequest req) throws SolrException { final long startTime = System.currentTimeMillis(); // during the solr query we set the thread name to the query string to get more debugging info in thread dumps String q = req.getParams().get(CommonParams.Q); String fq = req.getParams().get(CommonParams.FQ); String sort = req.getParams().get(CommonParams.SORT); String threadname = Thread.currentThread().getName(); if (q != null) Thread.currentThread().setName("solr query: q = " + q + (fq == null ? "" : ", fq = " + fq) + (sort == null ? "" : ", sort = " + sort)); // for debugging in Threaddump SolrQueryResponse rsp = new SolrQueryResponse(); NamedList<Object> responseHeader = new SimpleOrderedMap<Object>(); responseHeader.add("params", req.getOriginalParams().toNamedList()); rsp.add("responseHeader", responseHeader); //SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp)); // send request to solr and create a result this.requestHandler.handleRequest(req, rsp); // get statistics and add a header with that Exception exception = rsp.getException(); int status = exception == null ? 0 : exception instanceof SolrException ? ((SolrException) exception).code() : 500; responseHeader.add("status", status); responseHeader.add("QTime", (int) (System.currentTimeMillis() - startTime)); if (q != null) Thread.currentThread().setName(threadname); // return result return rsp;//from ww w . ja v a2 s . co m }
From source file:net.yacy.cora.federate.solr.responsewriter.GrepHTMLResponseWriter.java
License:Open Source License
@Override public void write(final Writer writer, final SolrQueryRequest request, final SolrQueryResponse rsp) throws IOException { NamedList<?> values = rsp.getValues(); assert values.get("responseHeader") != null; assert values.get("response") != null; writer.write(//from w ww . j a v a 2 s . co m "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n"); writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"/env/base.css\" />\n"); writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/style.css\" />\n"); SolrParams params = request.getOriginalParams(); String grep = params.get("grep"); String query = ""; String q = params.get(CommonParams.Q); if (q == null) q = ""; int p = q.indexOf(':'); if (p >= 0) { int r = q.charAt(p + 1) == '"' ? q.indexOf(p + 2, '"') : q.indexOf(' '); if (r < 0) r = q.length(); query = q.substring(p + 1, r); if (query.length() > 0) { if (query.charAt(0) == '"') query = query.substring(1); if (query.charAt(query.length() - 1) == '"') query = query.substring(0, query.length() - 1); } } if (grep == null && query.length() > 0) grep = query; if (grep.length() > 0) { if (grep.charAt(0) == '"') grep = grep.substring(1); if (grep.charAt(grep.length() - 1) == '"') grep = grep.substring(0, grep.length() - 1); } NamedList<Object> paramsList = params.toNamedList(); paramsList.remove("wt"); String xmlquery = dqp.matcher("/solr/select?" + SolrParams.toSolrParams(paramsList).toString()) .replaceAll("%22"); DocList response = ((ResultContext) values.get("response")).docs; final int sz = response.size(); if (sz > 0) { SolrIndexSearcher searcher = request.getSearcher(); DocIterator iterator = response.iterator(); IndexSchema schema = request.getSchema(); String h1 = "Document Grep for query \"" + query + "\" and grep phrase \"" + grep + "\""; writer.write("<title>" + h1 + "</title>\n</head><body>\n<h1>" + h1 + "</h1>\n"); writer.write("<div id=\"api\"><a href=\"" + xmlquery + "\"><img src=\"../env/grafics/api.png\" width=\"60\" height=\"40\" alt=\"API\" /></a>\n"); writer.write( "<span>This search result can also be retrieved as XML. Click the API icon to see an example call to the search rss API.</span></div>\n"); for (int i = 0; i < sz; i++) { int id = iterator.nextDoc(); Document doc = searcher.doc(id, DEFAULT_FIELD_LIST); LinkedHashMap<String, String> tdoc = HTMLResponseWriter.translateDoc(schema, doc); String sku = tdoc.get(CollectionSchema.sku.getSolrFieldName()); String title = tdoc.get(CollectionSchema.title.getSolrFieldName()); String text = tdoc.get(CollectionSchema.text_t.getSolrFieldName()); ArrayList<String> sentences = new ArrayList<String>(); if (title != null) sentences.add(title); SentenceReader sr = new SentenceReader(text); StringBuilder line; while (sr.hasNext()) { line = sr.next(); if (line.length() > 0) sentences.add(line.toString()); } writeDoc(writer, sku, sentences, grep); } } else { writer.write("<title>No Document Found</title>\n</head><body>\n"); } writer.write("</body></html>\n"); }
From source file:net.yacy.cora.federate.solr.responsewriter.HTMLResponseWriter.java
License:Open Source License
@Override public void write(final Writer writer, final SolrQueryRequest request, final SolrQueryResponse rsp) throws IOException { NamedList<?> values = rsp.getValues(); assert values.get("responseHeader") != null; assert values.get("response") != null; writer.write(//from w ww . ja v a2 s . co m "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"); //writer.write("<!--\n"); //writer.write("this is a XHTML+RDFa file. It contains RDF annotations with dublin core properties\n"); //writer.write("you can validate it with http://validator.w3.org/\n"); //writer.write("-->\n"); writer.write("<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"); writer.write(" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"); writer.write(" xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n"); writer.write(" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">\n"); writer.write("<head profile=\"http://www.w3.org/2003/g/data-view\">\n"); //writer.write("<link rel=\"transformation\" href=\"http://www-sop.inria.fr/acacia/soft/RDFa2RDFXML.xsl\"/>\n"); writer.write("<!-- Bootstrap core CSS -->\n"); writer.write("<link href=\"/env/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\">\n"); writer.write("<link href=\"/env/bootstrap/css/bootstrap-switch.min.css\" rel=\"stylesheet\">\n"); //writer.write("<script src=\"/env/bootstrap/js/jquery.min.js\"></script>\n"); //writer.write("<script src=\"/env/bootstrap/js/bootstrap.min.js\"></script>\n"); //writer.write("<script src=\"/env/bootstrap/js/docs.min.js\"></script>\n"); //writer.write("<script src=\"/env/bootstrap/js/bootstrap-switch.min.js\"></script>\n"); writer.write("<!-- Custom styles for this template, i.e. navigation (move this to base.css) -->\n"); writer.write("<link href=\"/env/bootstrap-base.css\" rel=\"stylesheet\">\n"); //writer.write("<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->\n"); //writer.write("<!--[if lt IE 9]>\n"); //writer.write(" <script src=\"/env/bootstrap/js/html5shiv.js\"></script>\n"); //writer.write(" <script src=\"/env/bootstrap/js/respond.min.js\"></script>\n"); //writer.write("<![endif]-->\n"); writer.write("<!-- old css styles -->\n"); writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"/env/base.css\" />\n"); writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/style.css\" />\n"); writer.write("<!--[if lt IE 6]>\n"); writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/oldie.css\" />\n"); writer.write("<![endif]-->\n"); writer.write("<!--[if lte IE 6.0]>\n"); writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/ie6.css\" />\n"); writer.write("<![endif]-->\n"); writer.write("<!--[if lte IE 7.0]>\n"); writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/ie7.css\" />\n"); writer.write("<![endif]-->\n"); writer.write("<!-- (C), Architecture: Michael Peter Christen; Contact: mc <at> yacy.net -->\n"); NamedList<Object> paramsList = request.getOriginalParams().toNamedList(); paramsList.remove("wt"); String xmlquery = dqp.matcher("/solr/select?" + SolrParams.toSolrParams(paramsList).toString()) .replaceAll("%22"); DocList response = ((ResultContext) values.get("response")).docs; final int sz = response.size(); if (sz > 0) { SolrIndexSearcher searcher = request.getSearcher(); DocIterator iterator = response.iterator(); IndexSchema schema = request.getSchema(); int id = iterator.nextDoc(); Document doc = searcher.doc(id, DEFAULT_FIELD_LIST); LinkedHashMap<String, String> tdoc = translateDoc(schema, doc); String title = doc.get(CollectionSchema.title.getSolrFieldName()); // title is multivalued, after translation fieldname could be in tdoc. "title_0" ..., so get it from doc if (sz == 1) { writer.write("<title>" + title + "</title>\n</head><body>\n"); } else { writer.write("<title>Document List</title>\n</head><body>\n"); } writer.write("<div id=\"api\"><a href=\"" + xmlquery + "\"><img src=\"../env/grafics/api.png\" width=\"60\" height=\"40\" alt=\"API\" /></a>\n"); writer.write( "<span>This search result can also be retrieved as XML. Click the API icon to see this page as XML.</span></div>\n"); writeDoc(writer, tdoc, title); while (iterator.hasNext()) { id = iterator.nextDoc(); doc = searcher.doc(id, DEFAULT_FIELD_LIST); tdoc = translateDoc(schema, doc); title = tdoc.get(CollectionSchema.title.getSolrFieldName()); writeDoc(writer, tdoc, title); } } else { writer.write("<title>No Document Found</title>\n</head><body>\n"); writer.write("<div class='alert alert-info'>No documents found</div>\n"); } writer.write("</body></html>\n"); }
From source file:opennlp.tools.similarity.apps.solr.SearchResultsReRankerRequestHandler.java
License:Apache License
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) { // get query string String requestExpression = req.getParamString(); String[] exprParts = requestExpression.split("&"); for (String part : exprParts) { if (part.startsWith("q=")) requestExpression = part;/*from w w w .j a va2s. c o m*/ } String query = StringUtils.substringAfter(requestExpression, ":"); LOG.info(requestExpression); SolrParams ps = req.getOriginalParams(); Iterator<String> iter = ps.getParameterNamesIterator(); List<String> keys = new ArrayList<String>(); while (iter.hasNext()) { keys.add(iter.next()); } List<HitBase> searchResults = new ArrayList<HitBase>(); for (Integer i = 0; i < MAX_SEARCH_RESULTS; i++) { String title = req.getParams().get("t" + i.toString()); String descr = req.getParams().get("d" + i.toString()); if (title == null || descr == null) continue; HitBase hit = new HitBase(); hit.setTitle(title); hit.setAbstractText(descr); hit.setSource(i.toString()); searchResults.add(hit); } /* * http://173.255.254.250:8983/solr/collection1/reranker/? * q=search_keywords:design+iphone+cases&fields=spend+a+day+with+a+custom+iPhone+case&fields=Add+style+to+your+every+day+fresh+design+with+a+custom+iPhone+case&fields=Add+style+to+your+every+day+with+mobile+case+for+your+family&fields=Add+style+to+your+iPhone+and+iPad&fields=Add+Apple+fashion+to+your+iPhone+and+iPad * */ if (searchResults.size() < 1) { int count = 0; for (String val : exprParts) { if (val.startsWith("fields=")) { val = StringUtils.mid(val, 7, val.length()); HitBase hit = new HitBase(); hit.setTitle(""); hit.setAbstractText(val); hit.setSource(new Integer(count).toString()); searchResults.add(hit); count++; } } } List<HitBase> reRankedResults = null; query = query.replace('+', ' '); if (tooFewKeywords(query) || orQuery(query)) { reRankedResults = searchResults; LOG.info("No re-ranking for " + query); } else reRankedResults = calculateMatchScoreResortHits(searchResults, query); /* * <scores> <score index="2">3.0005</score> <score index="1">2.101</score> <score index="3">2.1003333333333334</score> <score index="4">2.00025</score> <score index="5">1.1002</score> </scores> * * */ StringBuffer buf = new StringBuffer(); buf.append("<scores>"); for (HitBase hit : reRankedResults) { buf.append("<score index=\"" + hit.getSource() + "\">" + hit.getGenerWithQueryScore() + "</score>"); } buf.append("</scores>"); NamedList<Object> scoreNum = new NamedList<Object>(); for (HitBase hit : reRankedResults) { scoreNum.add(hit.getSource(), hit.getGenerWithQueryScore()); } StringBuffer bufNums = new StringBuffer(); bufNums.append("order>"); for (HitBase hit : reRankedResults) { bufNums.append(hit.getSource() + "_"); } bufNums.append("/order>"); LOG.info("re-ranking results: " + buf.toString()); NamedList<Object> values = rsp.getValues(); values.remove("response"); values.add("response", scoreNum); //values.add("new_order", bufNums.toString().trim()); rsp.setAllValues(values); }
From source file:opennlp.tools.similarity.apps.solr.SearchResultsReRankerStanfRequestHandler.java
License:Apache License
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) { // get query string String requestExpression = req.getParamString(); String[] exprParts = requestExpression.split("&"); for (String part : exprParts) { if (part.startsWith("q=")) requestExpression = part;/*from w w w. j a v a2s . co m*/ } String query = StringUtils.substringAfter(requestExpression, ":"); LOG.info(requestExpression); SolrParams ps = req.getOriginalParams(); Iterator<String> iter = ps.getParameterNamesIterator(); List<String> keys = new ArrayList<String>(); while (iter.hasNext()) { keys.add(iter.next()); } List<HitBase> searchResults = new ArrayList<HitBase>(); for (Integer i = 0; i < MAX_SEARCH_RESULTS; i++) { String title = req.getParams().get("t" + i.toString()); String descr = req.getParams().get("d" + i.toString()); if (title == null || descr == null) continue; HitBase hit = new HitBase(); hit.setTitle(title); hit.setAbstractText(descr); hit.setSource(i.toString()); searchResults.add(hit); } /* * http://173.255.254.250:8983/solr/collection1/reranker/? * q=search_keywords:design+iphone+cases&fields=spend+a+day+with+a+ * custom+iPhone+case&fields=Add+style+to+your+every+day+fresh+design+ * with+a+custom+iPhone+case&fields=Add+style+to+your+every+day+with+ * mobile+case+for+your+family&fields=Add+style+to+your+iPhone+and+iPad& * fields=Add+Apple+fashion+to+your+iPhone+and+iPad * */ if (searchResults.size() < 1) { int count = 0; for (String val : exprParts) { if (val.startsWith("fields=")) { val = StringUtils.mid(val, 7, val.length()); HitBase hit = new HitBase(); hit.setTitle(""); hit.setAbstractText(val); hit.setSource(new Integer(count).toString()); searchResults.add(hit); count++; } } } List<HitBase> reRankedResults = null; query = query.replace('+', ' '); if (tooFewKeywords(query) || orQuery(query)) { reRankedResults = searchResults; LOG.info("No re-ranking for " + query); } else reRankedResults = calculateMatchScoreResortHits(searchResults, query); /* * <scores> <score index="2">3.0005</score> <score * index="1">2.101</score> <score index="3">2.1003333333333334</score> * <score index="4">2.00025</score> <score index="5">1.1002</score> * </scores> * * */ StringBuffer buf = new StringBuffer(); buf.append("<scores>"); for (HitBase hit : reRankedResults) { buf.append("<score index=\"" + hit.getSource() + "\">" + hit.getGenerWithQueryScore() + "</score>"); } buf.append("</scores>"); NamedList<Object> scoreNum = new NamedList<Object>(); for (HitBase hit : reRankedResults) { scoreNum.add(hit.getSource(), hit.getGenerWithQueryScore()); } StringBuffer bufNums = new StringBuffer(); bufNums.append("order>"); for (HitBase hit : reRankedResults) { bufNums.append(hit.getSource() + "_"); } bufNums.append("/order>"); LOG.info("re-ranking results: " + buf.toString()); NamedList<Object> values = rsp.getValues(); values.remove("response"); values.add("response", scoreNum); values.add("new_order", bufNums.toString().trim()); rsp.setAllValues(values); }
From source file:opennlp.tools.similarity.apps.solr.SyntGenRequestHandler.java
License:Apache License
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) { try {/* w w w .ja va 2 s .c o m*/ super.handleRequestBody(req, rsp); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } SolrParams reqValues = req.getOriginalParams(); Iterator<String> iter = reqValues.getParameterNamesIterator(); while (iter.hasNext()) { System.out.println(iter.next()); } String param = req.getParamString(); //modify rsp NamedList values = rsp.getValues(); ResultContext c = (ResultContext) values.get("response"); if (c == null) return; String val1 = (String) values.get("t1"); String k1 = values.getName(0); k1 = values.getName(1); k1 = values.getName(2); k1 = values.getName(3); k1 = values.getName(4); DocList dList = c.docs; DocList dListResult = null; try { dListResult = filterResultsBySyntMatchReduceDocSet(dList, req, req.getParams()); } catch (Exception e) { dListResult = dList; // TODO Auto-generated catch block e.printStackTrace(); } c.docs = dListResult; values.remove("response"); rsp.setAllValues(values); }