List of usage examples for org.apache.solr.client.solrj SolrQuery setRows
public SolrQuery setRows(Integer rows)
From source file:edu.unc.lib.dl.ui.service.SolrQueryLayerService.java
License:Apache License
public boolean hasRole(AccessGroupSet accessGroups, UserRole userRole) { StringBuilder query = new StringBuilder(); String joinedGroups = accessGroups.joinAccessGroups(" OR ", userRole.toString() + "|", true); query.append("roleGroup:(").append(joinedGroups).append(')'); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query.toString()); solrQuery.setRows(0); try {/*from w w w . j av a2 s . c om*/ QueryResponse queryResponse = this.executeQuery(solrQuery); return queryResponse.getResults().getNumFound() > 0; } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); } return false; }
From source file:edu.unc.lib.dl.ui.service.SolrQueryLayerService.java
License:Apache License
/** * Get the number of departments represented in the collection * //w w w. j a v a 2 s .co m * @return the count, or -1 if there was an error retrieving the count */ public int getDepartmentsCount() { SolrQuery query; QueryResponse response; query = new SolrQuery(); query.setQuery("*:*"); query.setRows(0); query.addFacetField("department"); query.setFacetLimit(-1); try { response = this.executeQuery(query); return response.getFacetField("department").getValueCount(); } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); } return -1; }
From source file:edu.unc.lib.dl.ui.service.SolrQueryLayerService.java
License:Apache License
/** * Get the total number of collections// w ww.j ava 2 s . co m * * @return the count, or -1 if there was an error retrieving the count */ public long getCollectionsCount() { SolrQuery query; QueryResponse response; query = new SolrQuery(); query.setQuery("resourceType:Collection"); query.setRows(0); query.setFacetLimit(-1); try { response = this.executeQuery(query); return response.getResults().getNumFound(); } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); } return -1; }
From source file:edu.unc.lib.dl.ui.service.SolrQueryLayerService.java
License:Apache License
/** * Get the number of objects present in the collection for various formats * /*w ww. j a v a2 s .c o m*/ * @return a map from format name to count */ public Map<String, Long> getFormatCounts() { SolrQuery query; QueryResponse response; query = new SolrQuery(); query.setQuery("*:*"); query.setRows(0); query.addFacetField("contentType"); query.setFacetLimit(-1); HashMap<String, Long> counts = new HashMap<String, Long>(); try { response = this.executeQuery(query); FacetField facetField = response.getFacetField("contentType"); for (Count count : facetField.getValues()) { if (count.getName().startsWith("^text")) counts.put("text", count.getCount()); else if (count.getName().startsWith("^image")) counts.put("image", count.getCount()); else if (count.getName().startsWith("^dataset")) counts.put("dataset", count.getCount()); else if (count.getName().startsWith("^audio")) counts.put("audio", count.getCount()); else if (count.getName().startsWith("^video")) counts.put("video", count.getCount()); } } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); } return counts; }
From source file:edu.usu.sdl.openstorefront.service.SearchServiceImpl.java
License:Apache License
@Override public List<ComponentSearchView> getSearchItems(SearchQuery query, FilterQueryParams filter) { // use for advanced search with And - Or combinations on separate fields String queryOperator = " " + SolrAndOr.OR + " "; String myQueryString;/*from ww w . ja v a 2 s . c om*/ // If incoming query string is blank, default to solar *:* for the full query if (StringUtils.isNotBlank(query.getQuery())) { StringBuilder queryData = new StringBuilder(); Field fields[] = SolrComponentModel.class.getDeclaredFields(); for (Field field : fields) { org.apache.solr.client.solrj.beans.Field fieldAnnotation = field .getAnnotation(org.apache.solr.client.solrj.beans.Field.class); if (fieldAnnotation != null && field.getType() == String.class) { String name = field.getName(); if (StringUtils.isNotBlank(fieldAnnotation.value()) && org.apache.solr.client.solrj.beans.Field.DEFAULT .equals(fieldAnnotation.value()) == false) { name = fieldAnnotation.value(); } queryData.append(SolrEquals.EQUAL.getSolrOperator()).append(name) .append(SolrManager.SOLR_QUERY_SEPERATOR).append(query.getQuery()) .append(queryOperator); } } myQueryString = queryData.toString(); if (myQueryString.endsWith(queryOperator)) { queryData.delete((myQueryString.length() - (queryOperator.length())), myQueryString.length()); myQueryString = queryData.toString(); } } else { myQueryString = SolrManager.SOLR_ALL_QUERY; } log.log(Level.FINER, myQueryString); // execute the searchComponent method and bring back from solr a list array List<SolrComponentModel> resultsList = new ArrayList<>(); try { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(myQueryString); // fields to be returned back from solr solrQuery.setFields(SolrComponentModel.ID_FIELD, SolrComponentModel.ISCOMPONENT_FIELD); solrQuery.setStart(filter.getOffset()); solrQuery.setRows(filter.getMax()); Field sortField = ReflectionUtil.getField(new SolrComponentModel(), filter.getSortField()); if (sortField != null) { String sortFieldText = filter.getSortField(); org.apache.solr.client.solrj.beans.Field fieldAnnotation = sortField .getAnnotation(org.apache.solr.client.solrj.beans.Field.class); if (fieldAnnotation != null) { sortFieldText = fieldAnnotation.value(); } SolrQuery.ORDER order = SolrQuery.ORDER.desc; if (OpenStorefrontConstant.SORT_ASCENDING.equalsIgnoreCase(filter.getSortOrder())) { order = SolrQuery.ORDER.asc; } solrQuery.addSort(sortFieldText, order); } solrQuery.setIncludeScore(true); QueryResponse response = SolrManager.getServer().query(solrQuery); SolrDocumentList results = response.getResults(); DocumentObjectBinder binder = new DocumentObjectBinder(); resultsList = binder.getBeans(SolrComponentModel.class, results); } catch (SolrServerException ex) { throw new OpenStorefrontRuntimeException("Search Failed", "Contact System Admin. Seach server maybe Unavailable", ex); } catch (Exception ex) { log.log(Level.WARNING, "Solr query failed unexpectly; likely bad input.", ex); } //Pulling the full object on the return List<ComponentSearchView> views = new ArrayList<>(); List<String> componentIds = new ArrayList<>(); for (SolrComponentModel result : resultsList) { if (result.getIsComponent()) { componentIds.add(result.getId()); } } //remove bad indexes, if any List<ComponentSearchView> componentSearchViews = getComponentService().getSearchComponentList(componentIds); Set<String> goodComponentIdSet = new HashSet<>(); for (ComponentSearchView view : componentSearchViews) { goodComponentIdSet.add(view.getComponentId()); } for (String componentId : componentIds) { if (goodComponentIdSet.contains(componentId) == false) { log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", componentId)); deleteById(componentId); } } views.addAll(componentSearchViews); List<ComponentSearchView> articleViews = getAttributeService().getArticlesSearchView(); Map<String, ComponentSearchView> allViews = new HashMap<>(); for (ComponentSearchView componentSearchView : articleViews) { AttributeCodePk attributeCodePk = new AttributeCodePk(); attributeCodePk.setAttributeType(componentSearchView.getArticleAttributeType()); attributeCodePk.setAttributeCode(componentSearchView.getArticleAttributeCode()); allViews.put(attributeCodePk.toKey(), componentSearchView); } for (SolrComponentModel result : resultsList) { if (result.getIsComponent() == false) { ComponentSearchView view = allViews.get(result.getId()); if (view != null) { views.add(view); } else { log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", result.getId())); deleteById(result.getId()); } } } //TODO: Get the score and sort by score return views; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONObject getPopularGenomes() { JSONObject jsonData = null;//from ww w . j a v a 2s .c om JSONArray list = new JSONArray(); DataApiHandler dataApi = new DataApiHandler(); for (String genomeId : REFERENCE_GENOME_IDS) { Genome genome = dataApi.getGenome(genomeId); // construct genome JSONObject popGenome = new JSONObject(); popGenome.put("link", URL_GENOMEOVERVIEW_TAB.replace("{cType}", "genome").replace("{cId}", genomeId)); popGenome.put("popularName", genome.getGenomeName()); popGenome.put("gb_link", URL_GENOMEBROWSER.replace("{cType}", "genome").replace("{cId}", genomeId)); // meta data JSONObject meta = new JSONObject(); meta.put("genome_status", genome.getGenomeStatus()); meta.put("completion_date", genome.hasCompletionDate() ? genome.getCompletionDate() : ""); meta.put("collection_date", genome.hasCollectionDate() ? genome.getCollectionDate() : ""); meta.put("isolation_country", genome.hasIsolationCountry() ? genome.getIsolationCountry() : ""); meta.put("host_name", genome.hasHostName() ? genome.getHostName() : ""); meta.put("disease", genome.hasDisease() ? StringUtils.join(genome.getDisease(), ", ") : ""); meta.put("chromosomes", genome.getChromosomes()); meta.put("plasmids", genome.getPlasmids()); meta.put("contigs", genome.getContigs()); meta.put("genome_length", genome.getGenomeLength()); popGenome.put("metadata", meta); JSONArray data = new JSONArray(); // Features JSONObject ft = new JSONObject(); ft.put("description", "Features"); ft.put("link", URL_FEATURETABLE_TAB.replace("{cType}", "genome").replace("{cId}", genomeId) .replace("{featureType}", "").replace("{filterType}", "")); ft.put("picture", "/patric/images/icon-popular-feature.png"); ft.put("data", genome.getPatricCds()); data.add(ft); // Pathways JSONObject pw = new JSONObject(); pw.put("description", "Pathways"); pw.put("link", URL_PATHWAY_TAB.replace("{cType}", "genome").replace("{cId}", genomeId).replace("{pId}", "")); pw.put("picture", "/patric/images/icon-popular-pathway.png"); int cntPathway = 0; try { SolrQuery query = new SolrQuery("genome_id:" + genomeId); // {stat:{field:{field:genome_id,facet:{pathway_count:"unique(pathway_id)"}}}}} query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:genome_id,facet:{pathway_count:\"unique(pathway_id)\"}}}}}"); LOGGER.trace("[{}] {}", SolrCore.PATHWAY.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); List<Map> buckets = (List) ((Map) facets.get("stat")).get("buckets"); Map firstPathway = buckets.get(0); cntPathway = (Integer) firstPathway.get("pathway_count"); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } pw.put("data", cntPathway); data.add(pw); // Protein Family JSONObject pf = new JSONObject(); pf.put("description", "Protein Families"); pf.put("link", URL_PROTEINFAMILY_TAB.replace("{cType}", "genome").replace("{cId}", genomeId)); pf.put("picture", "/patric/images/icon-popular-proteinfamily.png"); // Experiment JSONObject tr = new JSONObject(); tr.put("description", "Transcriptomic Experiments"); tr.put("link", URL_TRANSCRIPTOMICS_TAB.replace("{cType}", "genome").replace("{cId}", genomeId) .replace("{kw}", "")); long numFound = 0; try { SolrQuery query = new SolrQuery("genome_ids:" + genomeId); query.setRows(0); LOGGER.trace("[{}] {}", SolrCore.TRANSCRIPTOMICS_EXPERIMENT.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_EXPERIMENT, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); numFound = (Integer) respBody.get("numFound"); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } tr.put("picture", "/patric/images/icon-popular-experiment.png"); tr.put("data", (int) numFound); data.add(tr); try { SolrQuery query = new SolrQuery( "figfam_id:[* TO *] AND annotation:PATRIC AND genome_id:" + genomeId); query.setRows(0); LOGGER.trace("[{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); pf.put("data", respBody.get("numFound")); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } data.add(pf); popGenome.put("popularData", data); list.add(popGenome); } if (list.size() > 0) { jsonData = new JSONObject(); jsonData.put("popularList", list); jsonData.put("popularTitle", "Select Genomes"); } return jsonData; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONObject getPopularGenomesForPathways() { JSONObject jsonData = null;/*from w ww . j a va 2 s. c o m*/ JSONArray list = new JSONArray(); for (String genomeId : REFERENCE_GENOME_IDS) { Genome genome = dataApi.getGenome(genomeId); // construct genome JSONObject popGenome = new JSONObject(); popGenome.put("popularName", genome.getGenomeName()); popGenome.put("link", URL_PATHWAY_TAB.replace("{cType}", "genome").replace("{cId}", genomeId).replace("{pId}", "")); JSONArray data = new JSONArray(); LinkedList<Map<String, String>> pathwayList = new LinkedList<>(); try { //{stat:{field:{field:pathway_id,sort:{ec_count:desc},facet:{ec_count:"unique(ec_number)",gene_count:"unique(feature_id)",field:{field:pathway_name}}}}} SolrQuery query = new SolrQuery("genome_id:" + genomeId).addFilterQuery("annotation:PATRIC"); query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:pathway_id,sort:{ec_count:desc},facet:{ec_count:\"unique(ec_number)\",gene_count:\"unique(feature_id)\",field:{field:pathway_name}}}}}"); LOGGER.debug("getPopularGenomesForPathways: [{}] {}", SolrCore.PATHWAY.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); List<Map> buckets = (List) ((Map) facets.get("stat")).get("buckets"); for (Map bucket : buckets) { Map<String, String> pathway = new HashMap<>(); pathway.put("id", bucket.get("val").toString()); pathway.put("ec_count", bucket.get("ec_count").toString()); pathway.put("gene_count", bucket.get("gene_count").toString()); // getting name List<Map> subBuckets = (List) ((Map) bucket.get("field")).get("buckets"); pathway.put("name", subBuckets.get(0).get("val").toString()); pathwayList.add(pathway); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } for (Map<String, String> pathway : pathwayList) { JSONObject pw = new JSONObject(); pw.put("name", pathway.get("name")); pw.put("name_link", URL_PATHWAY_TAB.replace("{cType}", "genome").replace("{cId}", genomeId) .replace("{pId}", pathway.get("id"))); // pw.put("class", item.get("pathway_class")); pw.put("gene_count", pathway.get("gene_count")); pw.put("gene_link", URL_PATHWAY_GENE_TAB.replace("{cId}", genomeId).replace("{pId}", pathway.get("id"))); pw.put("ec_count", pathway.get("ec_count")); pw.put("ec_link", URL_PATHWAY_EC_TAB.replace("{cId}", genomeId).replace("{pId}", pathway.get("id"))); data.add(pw); } popGenome.put("popularData", data); list.add(popGenome); } if (list.size() > 0) { jsonData = new JSONObject(); jsonData.put("popularList", list); jsonData.put("popularTitle", "Select Genomes"); } return jsonData; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONObject getPopularGenomesForTranscriptomics() { JSONObject jsonData = null;//from w w w. ja v a2s . com JSONArray list = new JSONArray(); for (String genomeId : REFERENCE_GENOME_IDS_TRANSCRIPTOMICS) { // construct genome node JSONObject popGenome = new JSONObject(); Genome genome = dataApi.getGenome(genomeId); popGenome.put("popularName", genome.getGenomeName()); popGenome.put("link", URL_TRANSCRIPTOMICS_TAB.replace("{cType}", "genome").replace("{cId}", genomeId) .replace("{kw}", "")); // Retrieve eId associated a given genome List<String> eIds = new ArrayList<>(); try { SolrQuery query = new SolrQuery("genome_ids:" + genomeId); query.setRows(1000).setFields("eid"); LOGGER.trace("[{}] {}", SolrCore.TRANSCRIPTOMICS_EXPERIMENT.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_EXPERIMENT, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Map> sdl = (List) respBody.get("docs"); for (Map doc : sdl) { eIds.add(doc.get("eid").toString()); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } JSONObject gm = new JSONObject(); JSONObject ec = new JSONObject(); gm.put("title", "Gene Modifications"); ec.put("title", "Experiment Conditions"); JSONArray data = new JSONArray(); try { Map response = dataApi.getFieldFacets(SolrCore.TRANSCRIPTOMICS_EXPERIMENT, "*:*", "eid:(" + StringUtils.join(eIds, " OR ") + ")", "mutant,condition"); Map facets = (Map) response.get("facets"); Map mutantsFacet = (Map) facets.get("mutant"); int i = 0; for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) mutantsFacet.entrySet()) { JSONObject mutant = new JSONObject(); mutant.put("label", entry.getKey()); mutant.put("value", entry.getValue()); data.add(mutant); i++; if (i > 4) { break; } } gm.put("data", data); // top 5 experiment conditoins data = new JSONArray(); Map conditionsFacet = (Map) facets.get("condition"); i = 0; for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) conditionsFacet.entrySet()) { JSONObject condition = new JSONObject(); condition.put("label", entry.getKey()); condition.put("value", entry.getValue()); data.add(condition); i++; if (i > 4) { break; } } ec.put("data", data); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } popGenome.put("GeneModifications", gm); popGenome.put("ExperimentConditions", ec); list.add(popGenome); } if (list.size() > 0) { jsonData = new JSONObject(); jsonData.put("popularList", list); jsonData.put("popularTitle", "Select Genomes"); } return jsonData; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONObject getPathwayECDist() { JSONObject jsonData;//w w w . j a va2 s . c om JSONArray series = new JSONArray(); for (Integer txId : GENUS_TAXON_IDS) { int total = 0; List<Integer> distribution = new LinkedList<>(); // {stat:{field:{field:pathway_id,limit:-1,facet:{ec_count:"unique(ec_number)",genome_count:"unique(genome_id)",genome_ec_count:"unique(genome_ec)"}}}} try { SolrQuery query = new SolrQuery("annotation:PATRIC"); query.addFilterQuery(SolrCore.GENOME.getSolrCoreJoin("genome_id", "genome_id", "genome_status:(Complete OR WGS) AND taxon_lineage_ids:" + txId)); query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:pathway_id,limit:-1,facet:{ec_count:\"unique(ec_number)\",genome_count:\"unique(genome_id)\",genome_ec_count:\"unique(genome_ec)\"}}}}"); LOGGER.debug("getPathwayECDist: [{}] {}", SolrCore.PATHWAY.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); List<Map> buckets = (List) ((Map) facets.get("stat")).get("buckets"); int bin1 = 0, bin2 = 0, bin3 = 0, bin4 = 0, bin5 = 0; for (Map bucket : buckets) { double ec_count = ((Integer) bucket.get("ec_count")).doubleValue(); double genome_count = ((Integer) bucket.get("genome_count")).doubleValue(); double genome_ec_count = ((Integer) bucket.get("genome_ec_count")).doubleValue(); long bin = Math.round(genome_ec_count / genome_count / ec_count * 100); // LOGGER.trace("calculating conservation, ec:{}, genome:{}, genome_ec:{}, bin:{}", ec_count, genome_count, genome_ec_count, bin); if (bin < 20) { bin5++; } else if (bin >= 20 && bin < 40) { bin4++; } else if (bin >= 40 && bin < 60) { bin3++; } else if (bin >= 60 && bin < 80) { bin2++; } else if (bin >= 80) { bin1++; } total++; } distribution.addAll(Arrays.asList(bin1, bin2, bin3, bin4, bin5)); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } Taxonomy taxonomy = dataApi.getTaxonomy(txId); JSONObject item = new JSONObject(); item.put("pathogen", taxonomy.getTaxonName()); item.put("total", total); item.put("dist", distribution); series.add(item); } jsonData = new JSONObject(); jsonData.put("chart_title", "Pathway Conservation in Pathogenic Bacteria"); jsonData.put("chart_desc", "The graph below shows conservation of metabolic pathways across percentage of total genomes in each pathogenic genus."); jsonData.put("data", series); return jsonData; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONArray getFIGFamConservationDistribution(int taxonId) { JSONArray dist = new JSONArray(); try {//from ww w.j a v a 2s . c o m Map<Integer, List<String>> distMap = new LinkedHashMap<>(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery("feature_type:CDS AND annotation:PATRIC"); query.addFilterQuery( SolrCore.GENOME.getSolrCoreJoin("genome_id", "genome_id", "taxon_lineage_ids:" + taxonId)); query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:figfam_id,limit:-1,allBuckets:true,facet:{genome_count:\"unique(genome_id)\"}}}}"); LOGGER.trace("getFIGFamConservationDistribution(), [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); Map allBuckets = (Map) ((Map) facets.get("stat")).get("allBuckets"); double totalGenomeCount = ((Integer) allBuckets.get("genome_count")).doubleValue(); List<Map> buckets = (List<Map>) ((Map) facets.get("stat")).get("buckets"); for (Map bucket : buckets) { String figfamID = (String) bucket.get("val"); double genomeCount = ((Integer) bucket.get("genome_count")).doubleValue(); int groupHash = ((Double) Math.ceil(genomeCount / totalGenomeCount * 10.0d)).intValue(); // LOGGER.trace("group hashing.. {}:{}/{} -> {}", figfamID, genomeCount, totalGenomeCount, groupHash); if (distMap.get(groupHash) == null) { distMap.put(groupHash, new LinkedList<String>()); } distMap.get(groupHash).add(figfamID); } for (int i = 1; i <= 10; i++) { JSONObject item = new JSONObject(); if (distMap.get(i) != null && !distMap.get(i).isEmpty()) { item.put("x", (i) + "0%"); item.put("y", distMap.get(i).size()); } else { item.put("x", (i) + "0%"); item.put("y", 0); } dist.add(item); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } return dist; }