Example usage for org.apache.solr.request SolrQueryRequest getOriginalParams

List of usage examples for org.apache.solr.request SolrQueryRequest getOriginalParams

Introduction

In this page you can find the example usage for org.apache.solr.request SolrQueryRequest getOriginalParams.

Prototype

SolrParams getOriginalParams();

Source Link

Document

Returns the original request parameters.

Usage

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);
}