Example usage for org.apache.solr.common.util NamedList setVal

List of usage examples for org.apache.solr.common.util NamedList setVal

Introduction

In this page you can find the example usage for org.apache.solr.common.util NamedList setVal.

Prototype

public T setVal(int idx, T val) 

Source Link

Document

Modifies the value of the pair at the specified index.

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//w ww. j  av a2 s  .c o  m
    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.MySearchHandler.java

License:Apache License

private Map<Integer, String> getRelationReverse(String value, SolrQueryRequest req) {
    /*** Galla's modified code starts here ---- >
     * //  w w  w . jav a2 s  .co m
     */
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
    QueryParser relationsparser = new QueryParser(Version.LUCENE_46, "relations", analyzer);
    QueryParser entityparser = new QueryParser(Version.LUCENE_46, "entity", analyzer);
    QueryParser fieldidparser = new QueryParser(Version.LUCENE_46, "fieldid", analyzer);

    Map<Integer, String> desiredFieldList = null;
    int desiredFieldsCount = 0;
    String desiredRelation = null;

    Set<String> checkRelation = null;
    if (desiredFieldsCount < 5) {
        desiredFieldList = new HashMap<Integer, String>();
        checkRelation = new HashSet<String>();
        NamedList tempparamsList = req.getParams().toNamedList();
        SolrParams 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 = null;
        SolrQueryResponse firstrsp = null;
        ResponseBuilder firstrb = null;
        DocList docs = null;

        String relString = "";
        String fieldString = "";
        try {
            relString = relationsparser.parse(value).toString();

            fieldString = fieldidparser.parse(value).toString();
        } catch (ParseException e) {

            e.printStackTrace();
        }
        //      (+relations:"children" and +entity:"num") or (relations:"children" and fieldid:"children") or (fieldid:"children" and entity:"num")
        String tempQuery = "(" + relString + ")" + " OR (" + fieldString + ")";

        System.out.println(tempQuery);
        tempparamsList.setVal(tempparamsList.indexOf(CommonParams.Q, 0), tempQuery);

        firstreq = new LocalSolrQueryRequest(req.getCore(), tempparamsList);
        firstrsp = new SolrQueryResponse();
        firstrb = new ResponseBuilder(firstreq, firstrsp, components);

        for (SearchComponent c : components) {
            try {
                c.prepare(firstrb);
                c.process(firstrb);
            } catch (IOException ex) {

                java.util.logging.Logger.getLogger(MySearchHandler.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        docs = firstrb.getResults().docList;

        if (docs == null || docs.size() == 0) {
            log.debug("No results");
            // GET SECOND entry from WHTYPE .. search with that ..

        } else {
            //   NamedList docresults = new NamedList();
            DocIterator iterator = docs.iterator();
            Document doc;
            int docScore = 0;
            for (int i = 0; i < docs.size(); i++) {
                try {
                    int docid = iterator.nextDoc();
                    doc = firstrb.req.getSearcher().doc(docid, fieldSet);
                    desiredRelation = doc.get("fieldid");
                    if (!checkRelation.contains(desiredRelation)) {
                        checkRelation.add(desiredRelation);
                        desiredFieldList.put(desiredFieldsCount++, desiredRelation);
                        System.out.println("vgalla's relation : " + desiredRelation);
                        if (desiredFieldsCount >= 5) {
                            return desiredFieldList;
                        }
                    }
                } catch (IOException ex) {
                    java.util.logging.Logger.getLogger(MySearchHandler.class.getName()).log(Level.SEVERE, null,
                            ex);
                }
            }
        }
        firstreq.close();

        /*** Galla's code ends here ----- >
         * 
         */
    }

    return desiredFieldList;
}

From source file:com.search.MySearchHandler.java

License:Apache License

private static Map<Integer, String> getRelation(String value, TreeMap<String, Double> whtype,
        SolrQueryRequest req) {/*w ww. ja v a2 s  .c  o  m*/

    /***
     * Galla's modified code starts here ---- >
     * 
     */
    Map<Integer, String> desiredFieldList = null;
    if (whtype != null) {
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
        QueryParser relationsparser = new QueryParser(Version.LUCENE_46, "relations", analyzer);
        QueryParser entityparser = new QueryParser(Version.LUCENE_46, "entity", analyzer);
        QueryParser fieldidparser = new QueryParser(Version.LUCENE_46, "fieldid", analyzer);

        int desiredFieldsCount = 0;
        String desiredRelation = null;
        Set<String> whtypeSet = whtype.keySet();
        Set<String> checkRelation = null;
        if (!whtypeSet.isEmpty() && (desiredFieldsCount < 5)) {
            desiredFieldList = new HashMap<Integer, String>();
            checkRelation = new HashSet<String>();
            NamedList tempparamsList = req.getParams().toNamedList();
            SolrParams 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 = null;
            SolrQueryResponse firstrsp = null;
            ResponseBuilder firstrb = null;
            DocList docs = null;
            for (String tempStr : whtypeSet) {
                String tempType = tempStr.toLowerCase().trim();
                String relString = "";
                String entyString = "";
                String fieldString = "";
                try {
                    relString = relationsparser.parse(value).toString();
                    entyString = entityparser.parse(tempType).toString();
                    fieldString = fieldidparser.parse(value).toString();
                } catch (ParseException e) {

                    e.printStackTrace();
                }
                // (+relations:"children" and +entity:"num") or
                // (relations:"children" and fieldid:"children") or
                // (fieldid:"children" and entity:"num")
                String tempQuery = "(" + relString + " AND " + entyString + ")" + " OR " + "(" + relString
                        + " AND " + fieldString + ")" + " OR " + "(" + fieldString + " AND " + entyString + ")";

                System.out.println(tempQuery);
                tempparamsList.setVal(tempparamsList.indexOf(CommonParams.Q, 0), tempQuery);

                firstreq = new LocalSolrQueryRequest(req.getCore(), tempparamsList);
                firstrsp = new SolrQueryResponse();
                firstrb = new ResponseBuilder(firstreq, firstrsp, components);

                for (SearchComponent c : components) {
                    try {
                        c.prepare(firstrb);
                        c.process(firstrb);
                    } catch (IOException ex) {

                        java.util.logging.Logger.getLogger(MySearchHandler.class.getName()).log(Level.SEVERE,
                                null, ex);
                    }
                }

                docs = firstrb.getResults().docList;

                if (docs == null || docs.size() == 0) {
                    log.debug("No results");
                    // GET SECOND entry from WHTYPE .. search with that ..

                } else {
                    // NamedList docresults = new NamedList();
                    DocIterator iterator = docs.iterator();
                    Document doc;
                    int docScore = 0;
                    for (int i = 0; i < docs.size(); i++) {
                        try {
                            int docid = iterator.nextDoc();
                            doc = firstrb.req.getSearcher().doc(docid, fieldSet);
                            desiredRelation = doc.get("fieldid");
                            if (!checkRelation.contains(desiredRelation)) {
                                checkRelation.add(desiredRelation);
                                desiredFieldList.put(desiredFieldsCount++, desiredRelation);
                                System.out.println("vgalla's relation : " + desiredRelation);
                                if (desiredFieldsCount >= 5) {
                                    return desiredFieldList;
                                }
                            }
                        } catch (IOException ex) {
                            java.util.logging.Logger.getLogger(MySearchHandler.class.getName())
                                    .log(Level.SEVERE, null, ex);
                        }
                    }
                }
                firstreq.close();

                /***
                 * Galla's code ends here ----- >
                 * 
                 */

                String exrelstring = "";

                String[] strarray = value.split(" ");

                for (int i = 0; i < strarray.length; i++) {
                    if (exrelmap.containsKey(strarray[i].toLowerCase().trim())) {
                        exrelstring += exrelmap.get(strarray[i].toLowerCase().trim());
                    }
                }

                if (!exrelstring.equals("")) {
                    String[] temp = exrelstring.split("~~");
                    for (int i = 0; i < temp.length; i++) {
                        if (!temp[i].trim().equals("")) {

                            String mapdetect = mappingmap.get(temp[i].trim());

                            if (mapdetect.toLowerCase().trim().equals(tempType)) {
                                desiredRelation = temp[i].trim();
                                if (!checkRelation.contains(desiredRelation)) {
                                    checkRelation.add(desiredRelation);
                                    desiredFieldList.put(desiredFieldsCount++, desiredRelation);
                                    System.out.println("arafath's relation : " + desiredRelation);
                                    if (desiredFieldsCount >= 5) {
                                        return desiredFieldList;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return desiredFieldList;
}

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;//from  ww w  .j  a  v  a 2  s  .  co m

        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:com.zemanta.solrcassandrabridge.CassandraBridgeComponent.java

License:Apache License

@Override
public void process(ResponseBuilder rb) throws IOException {

    // First we need to get Documents, so we get the "id" of the field
    Set<String> fields = new HashSet<String>();
    fields.add(key_field_name);//ww w  . j av  a 2  s  .  co m
    SolrDocumentList docs = SolrPluginUtils.docListToSolrDocumentList(rb.getResults().docList,
            rb.req.getSearcher(), fields, null);

    // Docid_list is an array of ids to be retrieved
    List<BigInteger> docid_list = new ArrayList<BigInteger>();
    // We'll be putting things into output map in the form of {id: {field_name: value, ...}, ...}
    HashMap<BigInteger, HashMap<String, String>> output_map = new HashMap<BigInteger, HashMap<String, String>>();

    // Iterate through documents and get values of their id field
    for (SolrDocument doc : docs) {
        int docid = (Integer) doc.getFieldValue(key_field_name);
        docid_list.add(BigInteger.valueOf(docid));
        // prepare an output map for this id - empty hashmaps to be filled
        output_map.put(BigInteger.valueOf(docid), new HashMap<String, String>());
    }

    // Intersection of requested fields and bridged fields is what we will ask cassandra for
    ReturnFields returnFields = new SolrReturnFields(rb.req.getParams().getParams(CommonParams.FL), rb.req);
    Set<String> cassandra_fields;
    if (returnFields.wantsAllFields()) {
        cassandra_fields = bridged_fields;
    } else {
        cassandra_fields = returnFields.getLuceneFieldNames();
        cassandra_fields.retainAll(bridged_fields);
    }
    log.warn("Fields." + String.valueOf(cassandra_fields));

    // Get specific fields from cassandra to output_map
    cassandraConnector.getFieldsFromCassandra(docid_list, output_map, new ArrayList<String>(cassandra_fields));

    // Iterate through documents for the second time
    // Add the fields that cassandra returned
    // We could skip intermediate map, but we prefer separation of code messing with cassandra from code messing with solr structures
    for (SolrDocument doc : docs) {
        int docid = (Integer) doc.getFieldValue(key_field_name);
        for (Map.Entry<String, String> entry : output_map.get(BigInteger.valueOf(docid)).entrySet()) {
            doc.setField(entry.getKey(), entry.getValue());
        }
    }

    /// We replace the current response
    @SuppressWarnings("unchecked")
    NamedList<SolrDocumentList> vals = rb.rsp.getValues();
    int idx = vals.indexOf("response", 0);
    if (idx >= 0) {
        // I am pretty sure we always take this code path
        log.debug("Replacing DocList with SolrDocumentList " + docs.size());
        vals.setVal(idx, docs);
    } else {
        log.debug("Adding SolrDocumentList response" + docs.size());
        vals.add("response", docs);
    }

}

From source file:ec.edu.ucuenca.dcc.sld.SolrConnection.java

@Deprecated
public List<String> Find2(String var, String val, String var2, String val2, int limit)
        throws SolrServerException, IOException {

    int current = 0;

    List<String> ls = new ArrayList<>();
    NamedList params = new NamedList();
    params.add("q", var + ":" + "" + val + "\nAND\n" + var2 + ":" + val2);
    params.add("fl", "*,score");
    params.add("start", current + "");

    while (true) {
        params.setVal(2, current + "");
        SolrParams toSolrParams = SolrParams.toSolrParams(params);
        QueryResponse query = Solr.query(toSolrParams, SolrRequest.METHOD.POST);
        SolrDocumentList results = query.getResults();
        if (!query.getResults().isEmpty()) {
            for (int i = 0; i < results.size() && current < limit; i++) {
                SolrDocument get = results.get(i);
                //Object fieldValue = get.getFieldValue("score");
                Object fieldValue1 = get.getFieldValue("uri");
                //Object fieldValueEP = get.getFieldValue("endpoint");
                //double parseDouble = Double.parseDouble(fieldValue + "");
                ls.add(fieldValue1 + "");
                current += 1;//from ww  w.  jav  a 2s  .c o  m
            }
            if (!(current < limit)) {
                break;
            }

        } else {
            break;
        }
    }

    return ls;
}

From source file:ec.edu.ucuenca.dcc.sld.SolrConnection.java

public List<String[]> FindMod(String endpoint, String pquery, int limit, String mm)
        throws SolrServerException, IOException {

    String[] out = { "uri" };
    int current = 0;
    List<String[]> lsResults = new ArrayList<>();
    NamedList params = new NamedList();

    String newquery = "+(" + pquery + ") +(endpoint:\"" + endpoint + "\")";
    System.out.println("LOG_Solr_" + newquery);
    params.add("q", newquery);
    params.add("fl", "*,score");
    params.add("start", current + "");
    params.add("defType", "edismax");
    //params.add("mm", ""+mm);
    params.add("qf", "finalText");
    while (true) {
        params.setVal(2, current + "");
        SolrParams toSolrParams = SolrParams.toSolrParams(params);
        QueryResponse query = Solr.query(toSolrParams, SolrRequest.METHOD.POST);
        SolrDocumentList results = query.getResults();
        if (!query.getResults().isEmpty()) {
            boolean end = false;
            for (int i = 0; i < results.size(); i++) {
                String txt[] = new String[out.length];
                SolrDocument get = results.get(i);
                current++;//from  w w  w  . j a va 2  s  .  c  o m
                for (int ix = 0; ix < out.length; ix++) {
                    txt[ix] = get.getFieldValue(out[ix]).toString();
                }
                if (Double.parseDouble(get.getFieldValue("score").toString()) > 1.0) {
                    lsResults.add(txt);
                }
                if (limit != -1 && current >= limit) {
                    end = true;
                    break;
                }
            }
            if (end) {
                break;
            }
        } else {
            break;
        }
    }

    return lsResults;

}

From source file:ec.edu.ucuenca.dcc.sld.SolrConnection.java

public JSONArray FindModX(String endpoint, String pquery, int limit, String mm)
        throws SolrServerException, IOException {

    String[] out = { "uri", "Icon", "Title", "Language", "Handle", "endpoint", "CallNumber", "BibLevel" };
    String[] outr = { "URI", "Icon", "Title", "Language", "Handle", "Repository", "CallNumber", "BibLevel" };
    boolean[] outt = { true, true, true, true, true, true, false, true };
    int current = 0;
    JSONArray lsResults = new JSONArray();
    NamedList params = new NamedList();

    String newquery = "+(" + pquery + ") +(endpoint:\"" + endpoint + "\")";
    System.out.println("LOG_Solr_" + newquery);
    params.add("q", newquery);
    params.add("fl", "*,score");
    params.add("start", current + "");
    params.add("defType", "edismax");
    //params.add("mm", ""+mm);
    params.add("qf", "finalText");
    while (true) {
        params.setVal(2, current + "");
        SolrParams toSolrParams = SolrParams.toSolrParams(params);
        QueryResponse query = Solr.query(toSolrParams, SolrRequest.METHOD.POST);
        SolrDocumentList results = query.getResults();
        if (!query.getResults().isEmpty()) {
            boolean end = false;
            for (int i = 0; i < results.size(); i++) {
                SolrDocument get = results.get(i);
                current++;/*from www  .j  av  a2  s.c  o m*/
                JSONObject mp = new JSONObject();
                for (int ix = 0; ix < out.length; ix++) {
                    if (get.containsKey(out[ix])) {
                        if (outt[ix]) {
                            String toString = get.getFieldValue(out[ix]).toString();
                            mp.put(outr[ix], toString);
                        } else {
                            Collection<Object> fieldValues = get.getFieldValues(out[ix]);
                            JSONArray vls = new JSONArray();
                            for (Object ob : fieldValues) {
                                vls.add(ob.toString());
                            }
                            mp.put(outr[ix], vls);
                        }
                    }
                }
                if (Double.parseDouble(get.getFieldValue("score").toString()) > 1.0) {
                    lsResults.add(mp);
                }
                if (limit != -1 && current >= limit) {
                    end = true;
                    break;
                }
            }
            if (end) {
                break;
            }
        } else {
            break;
        }
    }

    return lsResults;

}

From source file:ec.edu.ucuenca.dcc.sld.SolrConnection.java

public List<String[]> Find(String[] var, String[] val, boolean[] quo, String[] out, boolean and, int limit,
        boolean firstAnd) throws SolrServerException, IOException, Exception {

    int current = 0;
    List<String[]> lsResults = new ArrayList<>();

    if (var.length == val.length && val.length == quo.length) {
    } else {/*from   w ww. j  a v  a  2s  .  c  o m*/
        throw new Exception("Var != Val != Quo");
    }
    if (var.length <= 1 && firstAnd) {
        System.err.println("Ignoring firstAnd..");
        firstAnd = false;
    }

    NamedList params = new NamedList();
    String qry = "";
    for (int i = 0; i < var.length; i++) {

        qry += var[i] + ":" + "" + (quo[i] ? "\"" : "") + val[i] + (quo[i] ? "\"" : "") + "";
        if (i != var.length - 1) {
            if (and || firstAnd && i == 0) {
                qry += " AND ";
                if (firstAnd && i == 0) {
                    qry += " ( ";
                }
            } else {
                qry += " OR ";
            }
        } else {
            if (firstAnd) {
                qry += " ) ";
            }
        }
    }
    System.out.println("LOG_Solr_" + qry);
    params.add("q", qry);
    params.add("fl", "*,score");
    params.add("start", current + "");
    while (true) {
        params.setVal(2, current + "");
        SolrParams toSolrParams = SolrParams.toSolrParams(params);
        QueryResponse query = Solr.query(toSolrParams, SolrRequest.METHOD.POST);
        SolrDocumentList results = query.getResults();
        if (!query.getResults().isEmpty()) {
            boolean end = false;
            for (int i = 0; i < results.size(); i++) {
                String txt[] = new String[out.length];
                SolrDocument get = results.get(i);
                current++;
                for (int ix = 0; ix < out.length; ix++) {
                    txt[ix] = get.getFieldValue(out[ix]).toString();
                }
                lsResults.add(txt);
                if (limit != -1 && current >= limit) {
                    end = true;
                    break;
                }
            }
            if (end) {
                break;
            }
        } else {
            break;
        }
    }

    return lsResults;
}

From source file:edu.upenn.library.solrplugins.CaseInsensitiveSortingTextField.java

License:Apache License

@Override
public void updateExternalRepresentation(NamedList<Object> nl) {
    for (int i = 0; i < nl.size(); i++) {
        String rawName = nl.getName(i);
        String externalName = readableToExternal(rawName);
        nl.setName(i, externalName);/*w ww  .  java 2s .  c  om*/
        Object val = nl.getVal(i);
        Object updatedVal;
        if (!(val instanceof Number) && (updatedVal = updateValueExternalRepresentation(val)) != null) {
            nl.setVal(i, updatedVal);
        }
    }
}