List of usage examples for org.apache.solr.client.solrj SolrQuery setSort
public SolrQuery setSort(String field, ORDER order)
From source file:edu.vt.vbi.patric.portlets.FeatureCommentsPortlet.java
License:Apache License
protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { response.setContentType("text/html"); String cType = request.getParameter("context_type"); String cId = request.getParameter("context_id"); if (cType != null && cId != null && cType.equals("feature")) { List<Map> listAnnotation = new LinkedList<>(); DataApiHandler dataApi = new DataApiHandler(request); GenomeFeature feature = dataApi.getPATRICFeature(cId); if (feature != null) { if (feature.hasRefseqLocusTag()) { SolrQuery query = new SolrQuery("refseq_locus_tag:" + feature.getRefseqLocusTag()); query.addFilterQuery("!property:Interaction"); query.addSort("property", SolrQuery.ORDER.asc).addSort("evidence_code", SolrQuery.ORDER.asc); query.setRows(dataApi.MAX_ROWS); LOGGER.debug("[{}]: {}", SolrCore.STRUCTURED_ASSERTION.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.STRUCTURED_ASSERTION, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); listAnnotation.addAll((List<Map>) respBody.get("docs")); query.setFilterQueries("property:Interaction"); query.setSort("value", SolrQuery.ORDER.asc).addSort("evidence_code", SolrQuery.ORDER.asc); LOGGER.debug("[{}]: {}", SolrCore.STRUCTURED_ASSERTION.getSolrCoreName(), query); apiResponse = dataApi.solrQuery(SolrCore.STRUCTURED_ASSERTION, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); listAnnotation.addAll((List<Map>) respBody.get("docs")); }//from w w w . j av a 2 s. c om if (!listAnnotation.isEmpty()) { request.setAttribute("listAnnotation", listAnnotation); PortletRequestDispatcher prd = getPortletContext() .getRequestDispatcher("/WEB-INF/jsp/overview/feature_comments.jsp"); prd.include(request, response); } else { PrintWriter writer = response.getWriter(); writer.write("<!-- no feature comment found -->"); writer.close(); } } } else { PrintWriter writer = response.getWriter(); writer.write("<p>Invalid Parameter - missing context information</p>"); writer.close(); } }
From source file:edu.vt.vbi.patric.portlets.FeaturePropertiesPortlet.java
License:Apache License
protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { SiteHelper.setHtmlMetaElements(request, response, "Feature Overview"); response.setContentType("text/html"); String cType = request.getParameter("context_type"); String cId = request.getParameter("context_id"); if (cType != null && cId != null && cType.equals("feature")) { DataApiHandler dataApi = new DataApiHandler(request); GenomeFeature feature = dataApi.getPATRICFeature(cId); if (feature != null) { List<GenomeFeature> listReleateFeatures; List<String> listUniprotkbAccessions = null; List<Map<String, String>> listUniprotIds = null; String refseqLink = null; String refseqLocusTag = null; Map<String, String> virulenceFactor = null; SolrQuery query = new SolrQuery("pos_group:" + feature.getPosGroupInQuote()); query.setSort("annotation_sort", SolrQuery.ORDER.asc); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); listReleateFeatures = dataApi.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); // build listUniprotkbAccessions based on GI number if (feature.getGi() > 0) { query = new SolrQuery("id_value:(" + feature.getGi() + ")"); query.addFilterQuery("id_type:GI").setRows(dataApi.MAX_ROWS); apiResponse = dataApi.solrQuery(SolrCore.ID_REF, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); List<Map> uniprotList = (List<Map>) respBody.get("docs"); if (uniprotList.size() > 0) { listUniprotkbAccessions = new ArrayList<>(); }/*from w w w. ja v a 2 s .c o m*/ for (Map doc : uniprotList) { listUniprotkbAccessions.add(doc.get("uniprotkb_accession").toString()); } } if (listUniprotkbAccessions != null) { query = new SolrQuery( "uniprotkb_accession:(" + StringUtils.join(listUniprotkbAccessions, " OR ") + ")"); query.setFields("uniprotkb_accession,id_type,id_value"); query.setRows(1000); apiResponse = dataApi.solrQuery(SolrCore.ID_REF, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); if (!sdl.isEmpty()) { listUniprotIds = new ArrayList<>(); } for (Map doc : sdl) { Map<String, String> uniprot = new HashMap<>(); uniprot.put("Accession", doc.get("uniprotkb_accession").toString()); uniprot.put("idType", doc.get("id_type").toString()); uniprot.put("idValue", doc.get("id_value").toString()); listUniprotIds.add(uniprot); } } if (feature.getAnnotation().equals("PATRIC")) { if (feature.hasGeneId()) { refseqLink = SiteHelper.getExternalLinks("ncbi_gene").replace("&", "&") + feature.getGeneId(); } refseqLocusTag = feature.getRefseqLocusTag(); } else if (feature.getAnnotation().equals("RefSeq")) { refseqLocusTag = feature.getAltLocusTag(); } query = new SolrQuery("(locus_tag:" + feature.getAltLocusTag() + (feature.hasRefseqLocusTag() ? " OR locus_tag: " + feature.getRefseqLocusTag() : "") + ")"); query.setFilterQueries("source:PATRIC_VF"); query.setFields("source,source_id"); apiResponse = dataApi.solrQuery(SolrCore.SPECIALTY_GENE, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); for (Map doc : sdl) { virulenceFactor = new HashMap<>(); virulenceFactor.put("source", doc.get("source").toString()); virulenceFactor.put("sourceId", doc.get("source_id").toString()); } request.setAttribute("feature", feature); request.setAttribute("listReleateFeatures", listReleateFeatures); request.setAttribute("listUniprotkbAccessions", listUniprotkbAccessions); request.setAttribute("listUniprotIds", listUniprotIds); request.setAttribute("refseqLink", refseqLink); request.setAttribute("refseqLocusTag", refseqLocusTag); request.setAttribute("virulenceFactor", virulenceFactor); PortletRequestDispatcher prd = getPortletContext() .getRequestDispatcher("/WEB-INF/jsp/overview/feature_properties.jsp"); prd.include(request, response); } else { PrintWriter writer = response.getWriter(); writer.write(" "); writer.close(); } } else { PrintWriter writer = response.getWriter(); writer.write("<p>Invalid Parameter - missing context information</p>"); writer.close(); } }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
public String getGenomeIdsForTaxon(ResourceRequest request) throws IOException { String taxon = request.getParameter("taxonId"); String genomeFilter = request.getParameter("genomeFilter"); List<String> gIds = new ArrayList<>(); SolrQuery query = new SolrQuery("patric_cds:[1 TO *] AND taxon_lineage_ids:" + taxon); if (genomeFilter != null && !genomeFilter.equals("")) { query.addFilterQuery(genomeFilter); }// ww w .j av a 2s . c o m query.addField("genome_id"); query.setSort("genome_name", SolrQuery.ORDER.asc); query.setRows(DataApiHandler.MAX_ROWS); LOGGER.trace("getGenomeIdsForTaxon: [{}] {}", SolrCore.GENOME.getSolrCoreName(), query); String apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (final Genome g : genomes) { gIds.add(g.getId()); } // TODO: remove this when data API limit is removed if (gIds.size() == 25000) { query.setStart(25000); apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (final Genome g : genomes) { gIds.add(g.getId()); } } return StringUtils.join(gIds, ","); }
From source file:fr.gael.dhus.server.http.webapp.search.controller.SearchController.java
License:Open Source License
@PreAuthorize("hasRole('ROLE_SEARCH')") @RequestMapping(value = "/") public void search(Principal principal, @RequestParam(value = "q") String original_query, @RequestParam(value = "rows", defaultValue = "") String rows_str, @RequestParam(value = "start", defaultValue = "") String start_str, @RequestParam(value = "format", defaultValue = "") String format, @RequestParam(value = "orderby", required = false) String orderby, HttpServletResponse res) throws IOException, XMLStreamException, SolrServerException { ServerConfiguration dhusServer = configurationManager.getServerConfiguration(); String query = convertQuery(original_query); LOGGER.info("Rewritten Query: {}", query); boolean json = "json".equalsIgnoreCase(format); SolrQuery solrQuery = new SolrQuery(query); solrQuery.setParam("wt", "xslt").setParam("tr", "opensearch_atom.xsl") .setParam("dhusLongName", configurationManager.getNameConfiguration().getLongName()) .setParam("dhusServer", dhusServer.getExternalUrl()) .setParam("type", json ? "application/json" : "application/xml") .setParam("originalQuery", original_query); if (json) {//from w ww. ja v a2s. com solrQuery.setParam("format", "json"); } if (rows_str != null && !rows_str.isEmpty()) { try { int rows = Integer.parseInt(rows_str); if (ROW_LIMIT != UNLIMITED_SEARCH_ROWS && rows > ROW_LIMIT) { String errorMessage = String .format("Parameter `rows` exceeds the maximum value (%d) in search request", ROW_LIMIT); LOGGER.warn(errorMessage); res.sendError(HttpServletResponse.SC_BAD_REQUEST, errorMessage); return; } solrQuery.setRows(rows); } catch (NumberFormatException nfe) { /* noting to do : keep the default value */ } } if (start_str != null && !start_str.isEmpty()) { try { int start = Integer.parseInt(start_str); solrQuery.setStart(start); } catch (NumberFormatException nfe) { /* noting to do : keep the default value */ } } // If `orderby` param is not defined, default to ordering by ingestiondate desc. // Define `orderby` to `""` (empty string) to order by the full text search score. if (orderby == null) { solrQuery.setSort("ingestiondate", SolrQuery.ORDER.desc); } else if (!orderby.isEmpty()) { solrQuery.setParam("sort", orderby.toLowerCase()); } try (InputStream is = solrDao.streamSelect(solrQuery)) { try (ServletOutputStream os = res.getOutputStream()) { res.setStatus(HttpServletResponse.SC_OK); if ("json".equalsIgnoreCase(format)) { res.setContentType("application/json"); xmlToJson(is, os); } else { res.setContentType("application/xml"); IOUtils.copy(is, os); } } } catch (Exception e) { res.addHeader("cause-message", String.format("%s : %s", e.getClass().getSimpleName(), e.getMessage())); throw e; } }
From source file:fr.paris.lutece.plugins.search.solr.business.SolrSearchEngine.java
License:Open Source License
/** * Return the result with facets. Does NOT support authentification yet. * @param strQuery the query/*from ww w . ja v a 2 s . com*/ * @param facetQueries The selected facets * @param sortName The facet name to sort by * @param sortOrder "asc" or "desc" * @param nLimit Maximal number of results. * @return the result with facets */ public SolrFacetedResult getFacetedSearchResults(String strQuery, String[] facetQueries, String sortName, String sortOrder, int nLimit, int nCurrentPageIndex, int nItemsPerPage, Boolean bSpellCheck) { SolrFacetedResult facetedResult = new SolrFacetedResult(); SolrClient solrServer = SolrServerService.getInstance().getSolrServer(); List<SolrSearchResult> results = new ArrayList<SolrSearchResult>(); Hashtable<Field, List<String>> myValuesList = new Hashtable<Field, List<String>>(); if (solrServer != null) { SolrQuery query = new SolrQuery(strQuery); query.setHighlight(true); query.setHighlightSimplePre(SOLR_HIGHLIGHT_PRE); query.setHighlightSimplePost(SOLR_HIGHLIGHT_POST); query.setHighlightSnippets(SOLR_HIGHLIGHT_SNIPPETS); query.setHighlightFragsize(SOLR_HIGHLIGHT_FRAGSIZE); query.setFacet(true); query.setFacetLimit(SOLR_FACET_LIMIT); // query.setFacetMinCount( 1 ); for (Field field : SolrFieldManager.getFacetList().values()) { //Add facet Field if (field.getEnableFacet()) { if (field.getName().equalsIgnoreCase("date") || field.getName().toLowerCase().endsWith("_date")) { query.setParam("facet.date", field.getName()); query.setParam("facet.date.start", SOLR_FACET_DATE_START); query.setParam("facet.date.gap", SOLR_FACET_DATE_GAP); query.setParam("facet.date.end", SOLR_FACET_DATE_END); query.setParam("facet.date.mincount", "0"); } else { query.addFacetField(field.getSolrName()); query.setParam("f." + field.getSolrName() + ".facet.mincount", String.valueOf(field.getFacetMincount())); } myValuesList.put(field, new ArrayList<String>()); } } //Facet intersection List<String> treeParam = new ArrayList<String>(); for (FacetIntersection intersect : SolrFieldManager.getIntersectionlist()) { treeParam.add(intersect.getField1().getSolrName() + "," + intersect.getField2().getSolrName()); } //(String []) al.toArray (new String [0]); query.setParam("facet.tree", (String[]) treeParam.toArray(new String[0])); query.setParam("spellcheck", bSpellCheck); //sort order if ((sortName != null) && !"".equals(sortName)) { if (sortOrder.equals("asc")) { query.setSort(sortName, ORDER.asc); } else { query.setSort(sortName, ORDER.desc); } } else { for (Field field : SolrFieldManager.getSortList()) { if (field.getDefaultSort()) { query.setSort(field.getName(), ORDER.desc); } } } //Treat HttpRequest //FacetQuery if (facetQueries != null) { for (String strFacetQuery : facetQueries) { // if ( strFacetQuery.contains( DATE_COLON ) ) // { // query.addFilterQuery( strFacetQuery ); // } // else // { String myValues[] = strFacetQuery.split(":", 2); if (myValues != null && myValues.length == 2) { myValuesList = getFieldArrange(myValues, myValuesList); } //strFacetQueryWithColon = strFacetQuery.replaceFirst( SolrConstants.CONSTANT_COLON, COLON_QUOTE ); //strFacetQueryWithColon += SolrConstants.CONSTANT_QUOTE; // query.addFilterQuery( strFacetQuery ); // } } for (Field tmpFieldValue : myValuesList.keySet()) { List<String> strValues = myValuesList.get(tmpFieldValue); String strFacetString = ""; if (strValues.size() > 0) { strFacetString = extractQuery(strValues, tmpFieldValue.getOperator()); if (tmpFieldValue.getName().equalsIgnoreCase("date") || tmpFieldValue.getName().toLowerCase().endsWith("_date")) { strFacetString = strFacetString.replaceAll("\"", ""); } query.addFilterQuery(tmpFieldValue.getName() + ":" + strFacetString); } } } try { // count query query.setRows(0); QueryResponse response = solrServer.query(query); int nResults = (int) response.getResults().getNumFound(); facetedResult.setCount(nResults > nLimit ? nLimit : nResults); query.setStart((nCurrentPageIndex - 1) * nItemsPerPage); query.setRows(nItemsPerPage > nLimit ? nLimit : nItemsPerPage); query.setParam("defType", DEF_TYPE); String strWeightValue = generateQueryWeightValue(); query.setParam("qf", strWeightValue); response = solrServer.query(query); //HighLight Map<String, Map<String, List<String>>> highlightsMap = response.getHighlighting(); SolrHighlights highlights = null; if (highlightsMap != null) { highlights = new SolrHighlights(highlightsMap); } //resultList List<SolrItem> itemList = response.getBeans(SolrItem.class); results = SolrUtil.transformSolrItemsToSolrSearchResults(itemList, highlights); //set the spellcheckresult facetedResult.setSolrSpellCheckResponse(response.getSpellCheckResponse()); //Date facet if ((response.getFacetDates() != null) && !response.getFacetDates().isEmpty()) { facetedResult.setFacetDateList(response.getFacetDates()); } //FacetField facetedResult.setFacetFields(response.getFacetFields()); //Facet intersection (facet tree) NamedList<Object> resp = (NamedList<Object>) response.getResponse().get("facet_counts"); if (resp != null) { NamedList<NamedList<NamedList<Integer>>> trees = (NamedList<NamedList<NamedList<Integer>>>) resp .get("trees"); Map<String, ArrayList<FacetField>> treesResult = new HashMap<String, ArrayList<FacetField>>(); if (trees != null) { for (Entry<String, NamedList<NamedList<Integer>>> selectedFacet : trees) { //Selected Facet (ex : type,categorie ) //System.out.println(selectedFacet.getKey()); ArrayList<FacetField> facetFields = new ArrayList<FacetField>( selectedFacet.getValue().size()); for (Entry<String, NamedList<Integer>> facetField : selectedFacet.getValue()) { FacetField ff = new FacetField(facetField.getKey()); //System.out.println("\t" + facetField.getKey()); for (Entry<String, Integer> value : facetField.getValue()) { // Second Level ff.add(value.getKey(), value.getValue()); //System.out.println("\t\t" + value.getKey() + " : " + value.getValue()); } facetFields.add(ff); } treesResult.put(selectedFacet.getKey(), facetFields); } } facetedResult.setFacetIntersection(treesResult); } } catch (SolrServerException e) { AppLogService.error(e.getMessage(), e); } catch (IOException e) { AppLogService.error(e.getMessage(), e); } } else { facetedResult.setFacetFields(new ArrayList<FacetField>()); } facetedResult.setSolrSearchResults(results); return facetedResult; }
From source file:org.apache.lucene.benchmark.quality.mc.SolrSearcher.java
License:Apache License
private void search(String q, String QueryID) throws SolrServerException { SolrQuery query = new SolrQuery(q.replace("?", "")); query.setParam(CommonParams.DF, defaultField); query.setFields("id", "score"); query.setStart(0);//from w w w .java 2 s . c o m query.setRows(1000); query.setSort("score", SolrQuery.ORDER.desc); query.addSort("id", SolrQuery.ORDER.asc); int i = 0; for (SolrDocument document : server.query(query).getResults()) { String docno = (String) document.getFieldValue("id"); Float score = (Float) document.getFieldValue("score"); output.println(QueryID + "\tQ0\tMilliyet_0105_v00_" + docno.trim() + "\t" + i + "\t" + score + "\t" + getRunName()); i++; } }
From source file:org.apache.nutch.searcher.SolrBean.java
License:Apache License
public Hits search(Query query) throws IOException { // filter query string // final BooleanQuery bQuery = filters.filter(query); // final SolrQuery solrQuery = new SolrQuery(stringify(bQuery)); final SolrQuery solrQuery = new SolrQuery(); solrQuery.set("q", query.getQuery()); String a = query.getParams().getSortField(); solrQuery.setRows(query.getParams().getNumHits()); if (query.getParams().getSortField() == null) { // solrQuery.setFields(query.getParams().getDedupField(), "score", searchUID); query.getParams().setSortField("score"); } else {/*ww w. jav a 2s. co m*/ // solrQuery.setFields(query.getParams().getDedupField(), query // .getParams().getSortField(), searchUID); // solrQuery.setSortField(query.getParams().getSortField(), query // .getParams().isReverse() ? ORDER.asc : ORDER.desc); solrQuery.setSort(query.getParams().getSortField(), query.getParams().isReverse() ? ORDER.asc : ORDER.desc); } solrQuery.set("fl", "id,url,title,tstamp,type,content,segment,score"); solrQuery.setHighlight(true); solrQuery.set("hl.fl", "title,content"); solrQuery.set("hl.simple.pre", "<span class=highlight>"); solrQuery.set("hl.simple.post", "</span>"); solrQuery.set("defType", "edismax"); solrQuery.set("qf", "title^4 content"); QueryResponse response; try { response = solr.query(solrQuery); } catch (final SolrServerException e) { throw makeIOException(e); } final SolrDocumentList docList = response.getResults(); Map<String, Map<String, List<String>>> highlights = response.getHighlighting(); int qtime = response.getQTime(); final Hit[] hitArr = new Hit[docList.size()]; for (int i = 0; i < hitArr.length; i++) { final SolrDocument solrDoc = docList.get(i); String url = (String) solrDoc.getFieldValue("url"); String title = (String) solrDoc.getFieldValue("title"); String content = (String) solrDoc.getFieldValue("content"); final Object raw = solrDoc.getFirstValue(query.getParams().getSortField()); WritableComparable sortValue; if (raw instanceof Integer) { sortValue = new IntWritable(((Integer) raw).intValue()); } else if (raw instanceof Float) { sortValue = new FloatWritable(((Float) raw).floatValue()); } else if (raw instanceof String) { sortValue = new Text((String) raw); } else if (raw instanceof Long) { sortValue = new LongWritable(((Long) raw).longValue()); } else { throw new RuntimeException("Unknown sort value type!"); } final String dedupValue = (String) solrDoc.getFirstValue(query.getParams().getDedupField()); final String uniqueKey = (String) solrDoc.getFirstValue(searchUID); // hitArr[i] = new Hit(uniqueKey, sortValue, dedupValue); SolrHit hit = new SolrHit(uniqueKey, sortValue, dedupValue); SolrHitDetails details = buildDetails(solrDoc); details.setHit(hit); hit.setHitDetails(details); hit.setTitleHighlighted(title); int len = (content.length() > 100 ? 100 : content.length()); Summary.Fragment f = new Summary.Fragment(content.substring(0, len)); Summary summary = new Summary(); summary.add(f); hit.setSummary(summary); String titleHighlighted = ""; if (highlights.containsKey(url)) { Map<String, List<String>> snippets = highlights.get(url); if (snippets.containsKey("title")) { titleHighlighted = snippets.get("title").get(0); hit.setTitleHighlighted(titleHighlighted); } if (snippets.containsKey("content")) { f = new Summary.Fragment(snippets.get("content").get(0)); summary = new Summary(); summary.add(f); hit.setSummary(summary); } } hitArr[i] = hit; } return new Hits(docList.getNumFound(), hitArr); }
From source file:org.apache.ofbiz.solr.SolrProductSearch.java
License:Apache License
/** * Runs a query on the Solr Search Engine and returns the results. * <p>//from ww w. jav a 2 s . c o m * This function only returns an object of type QueryResponse, so it is probably not a good idea to call it directly from within the * groovy files (As a decent example on how to use it, however, use keywordSearch instead). */ public static Map<String, Object> runSolrQuery(DispatchContext dctx, Map<String, Object> context) { // get Connection HttpSolrClient client = null; String solrIndexName = (String) context.get("indexName"); Map<String, Object> result; try { client = SolrUtil.getInstance().getHttpSolrClient(solrIndexName); // create Query Object SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery((String) context.get("query")); // solrQuery.setQueryType("dismax"); boolean faceted = (Boolean) context.get("facet"); if (faceted) { solrQuery.setFacet(faceted); solrQuery.addFacetField("manu"); solrQuery.addFacetField("cat"); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(8); solrQuery.addFacetQuery("listPrice:[0 TO 50]"); solrQuery.addFacetQuery("listPrice:[50 TO 100]"); solrQuery.addFacetQuery("listPrice:[100 TO 250]"); solrQuery.addFacetQuery("listPrice:[250 TO 500]"); solrQuery.addFacetQuery("listPrice:[500 TO 1000]"); solrQuery.addFacetQuery("listPrice:[1000 TO 2500]"); solrQuery.addFacetQuery("listPrice:[2500 TO 5000]"); solrQuery.addFacetQuery("listPrice:[5000 TO 10000]"); solrQuery.addFacetQuery("listPrice:[10000 TO 50000]"); solrQuery.addFacetQuery("listPrice:[50000 TO *]"); } boolean spellCheck = (Boolean) context.get("spellcheck"); if (spellCheck) { solrQuery.setParam("spellcheck", spellCheck); } boolean highLight = (Boolean) context.get("highlight"); if (highLight) { solrQuery.setHighlight(highLight); solrQuery.setHighlightSimplePre("<span class=\"highlight\">"); solrQuery.addHighlightField("description"); solrQuery.setHighlightSimplePost("</span>"); solrQuery.setHighlightSnippets(2); } // Set additional Parameter // SolrQuery.ORDER order = SolrQuery.ORDER.desc; if (context.get("viewIndex") != null && (Integer) context.get("viewIndex") > 0) { solrQuery.setStart((Integer) context.get("viewIndex")); } if (context.get("viewSize") != null && (Integer) context.get("viewSize") > 0) { solrQuery.setRows((Integer) context.get("viewSize")); } // if ((List) context.get("queryFilter") != null && ((ArrayList<SolrDocument>) context.get("queryFilter")).size() > 0) { // List filter = (List) context.get("queryFilter"); // String[] tn = new String[filter.size()]; // Iterator it = filter.iterator(); // for (int i = 0; i < filter.size(); i++) { // tn[i] = (String) filter.get(i); // } // solrQuery.setFilterQueries(tn); // } String queryFilter = (String) context.get("queryFilter"); if (UtilValidate.isNotEmpty(queryFilter)) solrQuery.setFilterQueries(queryFilter.split(" ")); if ((String) context.get("returnFields") != null) { solrQuery.setFields((String) context.get("returnFields")); } // if((Boolean)context.get("sortByReverse"))order.reverse(); if ((String) context.get("sortBy") != null && ((String) context.get("sortBy")).length() > 0) { SolrQuery.ORDER order; if (!((Boolean) context.get("sortByReverse"))) order = SolrQuery.ORDER.asc; else order = SolrQuery.ORDER.desc; solrQuery.setSort(((String) context.get("sortBy")).replaceFirst("-", ""), order); } if ((String) context.get("facetQuery") != null) { solrQuery.addFacetQuery((String) context.get("facetQuery")); } QueryResponse rsp = client.query(solrQuery); result = ServiceUtil.returnSuccess(); result.put("queryResult", rsp); } catch (Exception e) { Debug.logError(e, e.getMessage(), module); result = ServiceUtil.returnError(e.toString()); } finally { if (client != null) { try { client.close(); } catch (IOException e) { // do nothing } } } return result; }
From source file:org.mousephenotype.cda.indexers.AlleleIndexer.java
License:Apache License
private void populateDiseaseLookup() throws SolrServerException, IOException { int docsRetrieved = 0; int numDocs = getDiseaseDocCount(); // Fields in the solr core to bring back String fields = StringUtils.join(Arrays.asList(DiseaseBean.DISEASE_ID, DiseaseBean.MGI_ACCESSION_ID, DiseaseBean.DISEASE_SOURCE, DiseaseBean.DISEASE_TERM, DiseaseBean.DISEASE_ALTS, DiseaseBean.DISEASE_CLASSES, DiseaseBean.HUMAN_CURATED, DiseaseBean.MOUSE_CURATED, DiseaseBean.MGI_PREDICTED, DiseaseBean.IMPC_PREDICTED, DiseaseBean.MGI_PREDICTED_KNOWN_GENE, DiseaseBean.IMPC_PREDICTED_KNOWN_GENE, DiseaseBean.MGI_NOVEL_PREDICTED_IN_LOCUS, DiseaseBean.IMPC_NOVEL_PREDICTED_IN_LOCUS), ","); // The solrcloud instance cannot give us all results back at once, // we must batch up the calls and build it up piece at a time while (docsRetrieved < numDocs + PHENODIGM_BATCH_SIZE) { SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery("type:disease_gene_summary"); query.setFields(fields);// w w w . j av a 2 s .c o m query.setStart(docsRetrieved); query.setRows(PHENODIGM_BATCH_SIZE); query.setSort(DiseaseBean.DISEASE_ID, SolrQuery.ORDER.asc); QueryResponse response = phenodigmCore.query(query); if (response == null) { throw new SolrServerException( "Response from phendigm core is null. Chcek phenodigm core is up with query: " + query); } List<DiseaseBean> diseases = response.getBeans(DiseaseBean.class); for (DiseaseBean disease : diseases) { if (!diseaseBeanByMgiGeneAccessionId.containsKey(disease.getMgiAccessionId())) { diseaseBeanByMgiGeneAccessionId.put(disease.getMgiAccessionId(), new ArrayList<DiseaseBean>()); } diseaseBeanByMgiGeneAccessionId.get(disease.getMgiAccessionId()).add(disease); } docsRetrieved += PHENODIGM_BATCH_SIZE; } }
From source file:org.mousephenotype.cda.solr.service.ExpressionService.java
License:Apache License
/** * * @param mgiAccession//w ww. ja v a2 s . c om * if mgi accesion null assume a request for control data * @param fields * @return * @throws SolrServerException, IOException */ public QueryResponse getExpressionTableDataImages(String mgiAccession, boolean embryo, String... fields) throws SolrServerException, IOException { // e.g. // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/impc_images/select?q=gene_accession_id:%22MGI:106209%22&facet=true&facet.field=ma_term&facet.mincount=1&fq=(parameter_name:%22LacZ%20Images%20Section%22%20OR%20parameter_name:%22LacZ%20Images%20Wholemount%22) SolrQuery solrQuery = new SolrQuery(); if (mgiAccession != null) { solrQuery.setQuery(ImageDTO.GENE_ACCESSION_ID + ":\"" + mgiAccession + "\""); } else { // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/impc_images/select?q=biological_sample_group:control&facet=true&facet.field=ma_term&facet.mincount=1&fq=(parameter_name:%22LacZ%20Images%20Section%22%20OR%20parameter_name:%22LacZ%20Images%20Wholemount%22)&rows=100000 solrQuery.setQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":\"" + "control" + "\""); } if (embryo) { solrQuery.addFilterQuery(ImageDTO.PARAMETER_NAME + ":\"LacZ images Section\" OR " + ImageDTO.PARAMETER_NAME + ":\"LacZ images wholemount\""); } else { solrQuery.addFilterQuery(ImageDTO.PARAMETER_NAME + ":\"LacZ Images Section\" OR " + ImageDTO.PARAMETER_NAME + ":\"LacZ Images Wholemount\""); } solrQuery.setFields(fields); solrQuery.setRows(100000); solrQuery.setSort(ObservationDTO.ID, SolrQuery.ORDER.asc); QueryResponse response = impcImagesCore.query(solrQuery); return response; }