List of usage examples for org.apache.solr.common.util NamedList setVal
public T setVal(int idx, T val)
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); } } }