List of usage examples for org.apache.solr.client.solrj SolrQuery addFacetField
public SolrQuery addFacetField(String... fields)
From source file:uk.ac.ebi.phenotype.service.StatisticalResultService.java
License:Apache License
public Map<String, Long> getColoniesNoMPHit(ArrayList<String> resourceName, ZygosityType zygosity) throws SolrServerException { Map<String, Long> res = new HashMap<>(); Long time = System.currentTimeMillis(); SolrQuery q = new SolrQuery(); if (resourceName != null) { q.setQuery(GenotypePhenotypeDTO.RESOURCE_NAME + ":" + StringUtils.join(resourceName, " OR " + GenotypePhenotypeDTO.RESOURCE_NAME + ":")); } else {/* ww w . jav a 2 s . com*/ q.setQuery("*:*"); } if (zygosity != null) { q.addFilterQuery(GenotypePhenotypeDTO.ZYGOSITY + ":" + zygosity.name()); } q.addFilterQuery(GenotypePhenotypeDTO.P_VALUE + ":[" + this.P_VALUE_THRESHOLD + " TO 1]"); q.addFacetField(StatisticalResultDTO.COLONY_ID); q.setFacetMinCount(1); q.setFacet(true); q.setRows(1); q.set("facet.limit", -1); System.out.println("Solr url for getColoniesNoMPHit " + solr.getBaseURL() + "/select?" + q); QueryResponse response = solr.query(q); for (Count facet : response.getFacetField(StatisticalResultDTO.COLONY_ID).getValues()) { String value = facet.getName(); long count = facet.getCount(); res.put(value, count); } System.out.println("Done in " + (System.currentTimeMillis() - time)); return res; }
From source file:uk.ac.ebi.phenotype.service.StatisticalResultService.java
License:Apache License
/** * @return Map <String, Long> : <top_level_mp_name, number_of_annotations> * @author tudose/*from www . j a v a2 s. c o m*/ */ public TreeMap<String, Long> getDistributionOfAnnotationsByMPTopLevel(ArrayList<String> resourceName, Float pValueThreshold) { SolrQuery query = new SolrQuery(); if (resourceName != null) { query.setQuery(StatisticalResultDTO.RESOURCE_NAME + ":" + StringUtils.join(resourceName, " OR " + StatisticalResultDTO.RESOURCE_NAME + ":")); } else { query.setQuery("*:*"); } if (pValueThreshold != null) { query.setFilterQueries(StatisticalResultDTO.P_VALUE + ":[0 TO " + pValueThreshold + "]"); } query.setFacet(true); query.setFacetLimit(-1); query.setFacetMinCount(1); query.setRows(0); query.addFacetField(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME); try { QueryResponse response = solr.query(query); TreeMap<String, Long> res = new TreeMap<>(); res.putAll(getFacets(response).get(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME)); return res; } catch (SolrServerException e) { e.printStackTrace(); } return null; }
From source file:uk.ac.ebi.phenotype.service.StatisticalResultService.java
License:Apache License
public PhenotypeFacetResult getPhenotypeFacetResultByPhenotypingCenterAndPipeline(String phenotypingCenter, String pipelineStableId) throws IOException, URISyntaxException { System.out.println("DOING PHEN CALL SUMMARY RESULTS FROM SRS"); SolrQuery query = new SolrQuery(); query.setQuery(StatisticalResultDTO.PHENOTYPING_CENTER + ":\"" + phenotypingCenter); query.addFilterQuery(StatisticalResultDTO.PIPELINE_STABLE_ID + ":" + pipelineStableId); query.setFacet(true);/* w ww . j av a2 s. co m*/ query.addFacetField(StatisticalResultDTO.RESOURCE_FULLNAME); query.addFacetField(StatisticalResultDTO.PROCEDURE_NAME); query.addFacetField(StatisticalResultDTO.MARKER_SYMBOL); query.addFacetField(StatisticalResultDTO.MP_TERM_NAME); query.set("sort", "p_value asc"); query.setRows(10000000); query.set("wt", "json"); query.set("version", "2.2"); String solrUrl = solr.getBaseURL() + "/select?" + query; return gpService.createPhenotypeResultFromSolrResponse(solrUrl, false); }
From source file:uk.ac.ebi.phenotype.service.StatisticalResultService.java
License:Apache License
public Set<String> getAccessionsByResourceName(String resourceName) { Set<String> res = new HashSet<>(); SolrQuery query = new SolrQuery().setQuery(StatisticalResultDTO.RESOURCE_NAME + ":" + resourceName); query.setFacet(true);/*from w w w . j av a 2s . co m*/ query.addFacetField(StatisticalResultDTO.MARKER_ACCESSION_ID); query.setFacetLimit(10000000); query.setFacetMinCount(1); query.setRows(0); QueryResponse response; try { response = solr.query(query); for (Count id : response.getFacetField(StatisticalResultDTO.MARKER_ACCESSION_ID).getValues()) { res.add(id.getName()); } } catch (SolrServerException e) { e.printStackTrace(); } return res; }
From source file:uk.ac.ebi.phis.service.ImageService.java
License:Apache License
public String getImages(String term, String phenotype, String mutantGene, String anatomy, String expressedGene, String sex, String taxon, String imageType, String sampleType, String stage, String visualisationMethod, String samplePreparation, String imagingMethod, Integer rows, Integer start, String genericGene, String chromosome, String strand, Long position, Long startPosition, Long endPosition, String hostName) throws SolrServerException, PhisQueryException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery("*:*"); // boosted queries String bq = ""; String qf = ""; if (term != null) { solrQuery.setQuery("(" + ImageDTO.GENERIC_SEARCH + ":" + handleSpecialCharacters(term) + " OR " + ImageDTO.GENERIC_SEARCH_ANCESTORS + ":" + handleSpecialCharacters(term) + ")"); if (term.contains(" ")) { String[] splittedQuery = term.split(" "); String query = ImageDTO.GENERIC_SEARCH + ":" + org.apache.commons.lang3.StringUtils .join(splittedQuery, "^10 " + ImageDTO.GENERIC_SEARCH + ":"); bq += ImageDTO.GENERIC_SEARCH + ":\"" + term + "\"^100 " + handleSpecialCharacters(query) + " " + ImageDTO.GENERIC_SEARCH_ANCESTORS + ":\"" + term + "\"^1 " + ImageDTO.GENERIC_SEARCH_ANCESTORS + ":" + org.apache.commons.lang3.StringUtils .join(splittedQuery, "^0.1 " + ImageDTO.GENERIC_SEARCH_ANCESTORS + ":"); qf += ImageDTO.GENERIC_SEARCH; } else {/*from w w w .j av a 2s.c o m*/ solrQuery.addFilterQuery("(" + ImageDTO.GENERIC_SEARCH + ":" + handleSpecialCharacters(term) + " OR " + ImageDTO.GENERIC_SEARCH_ANCESTORS + ":" + handleSpecialCharacters(term) + ")"); } } if (phenotype != null) { phenotype = handleSpecialCharacters(phenotype); bq += ImageDTO.PHENOTYPE_ID_BAG + ":\"" + phenotype + "\"^100 " + ImageDTO.PHENOTYPE_FREETEXT_BAG + ":\"" + phenotype + "\"^70 " + ImageDTO.PHENOTYPE_LABEL_BAG + ":\"" + phenotype + "\"^100 " + ImageDTO.PHENOTYPE_ANCESTORS + ":\"" + phenotype + "\"^0.001 " + ImageDTO.PHENOTYPE_SYNONYMS_BAG + ":\"" + phenotype + "\"^0.1 "; solrQuery.addFilterQuery(ImageDTO.PHENOTYPE_ID_BAG + ":\"" + phenotype + "\" OR " + ImageDTO.PHENOTYPE_FREETEXT_BAG + ":\"" + phenotype + "\" OR " + ImageDTO.PHENOTYPE_LABEL_BAG + ":\"" + phenotype + "\" OR " + ImageDTO.PHENOTYPE_ANCESTORS + ":\"" + phenotype + "\""); } if (visualisationMethod != null) { visualisationMethod = handleSpecialCharacters(visualisationMethod); bq += ImageDTO.VISUALISATION_METHOD_ID + ":\"" + visualisationMethod + "\"^100 " + ImageDTO.VISUALISATION_METHOD_LABEL + ":\"" + visualisationMethod + "\"^100 " + ImageDTO.VISUALISATION_METHOD_ANCESTORS + ":\"" + visualisationMethod + "\"^0.001 "; solrQuery.addFilterQuery(ImageDTO.VISUALISATION_METHOD_ID + ":\"" + visualisationMethod + "\" OR " + ImageDTO.VISUALISATION_METHOD_LABEL + ":\"" + visualisationMethod + "\" OR " + ImageDTO.VISUALISATION_METHOD_ANCESTORS + ":\"" + visualisationMethod + "\""); } if (samplePreparation != null) { samplePreparation = handleSpecialCharacters(samplePreparation); bq += ImageDTO.SAMPLE_PREPARATION_ID + ":\"" + samplePreparation + "\"^100 " + ImageDTO.SAMPLE_PREPARATION_LABEL + ":\"" + samplePreparation + "\"^100 " + ImageDTO.SAMPLE_PREPARATION_ANCESTORS + ":\"" + samplePreparation + "\"^0.001 "; solrQuery.addFilterQuery(ImageDTO.SAMPLE_PREPARATION_ID + ":\"" + samplePreparation + "\" OR " + ImageDTO.SAMPLE_PREPARATION_LABEL + ":\"" + samplePreparation + "\" OR " + ImageDTO.SAMPLE_PREPARATION_ANCESTORS + ":\"" + samplePreparation + "\""); } if (imagingMethod != null) { imagingMethod = handleSpecialCharacters(imagingMethod); bq = ImageDTO.IMAGING_METHOD_LABEL_ANALYSED + ":\"" + imagingMethod + "\"^100 " + ImageDTO.IMAGING_METHOD_ID + ":\"" + imagingMethod + "\"^100 " + ImageDTO.IMAGING_METHOD_ANCESTORS + ":\"" + imagingMethod + "\"^0.001 "; solrQuery.addFilterQuery(ImageDTO.IMAGING_METHOD_LABEL_ANALYSED + ":\"" + imagingMethod + "\" OR " + ImageDTO.IMAGING_METHOD_ID + ":\"" + imagingMethod + "\" OR " + ImageDTO.IMAGING_METHOD_ANCESTORS + ":\"" + imagingMethod + "\""); } if (anatomy != null) { anatomy = handleSpecialCharacters(anatomy); bq += ImageDTO.GENERIC_ANATOMY + ":\"" + anatomy + "\"^100 " + ImageDTO.GENERIC_ANATOMY_ANCESTORS + ":\"" + anatomy + "\"^0.001 "; solrQuery.addFilterQuery(ImageDTO.GENERIC_ANATOMY + ":\"" + anatomy + "\" OR " + ImageDTO.GENERIC_ANATOMY_ANCESTORS + ":\"" + anatomy + "\""); } if (!bq.equals("")) { solrQuery.set("defType", "edismax"); solrQuery.set("bq", bq); } if (!qf.equals("")) { solrQuery.set("qf", qf); } // Non-boosted queries if (mutantGene != null) { mutantGene = handleSpecialCharacters(mutantGene); solrQuery.addFilterQuery(ImageDTO.GENE_ID + ":\"" + mutantGene + "\" OR " + ImageDTO.GENE_SYMBOL + ":\"" + mutantGene + "\""); } if (hostName != null) { solrQuery.addFilterQuery(ImageDTO.HOST_NAME + ":\"" + hostName + "\""); } if (genericGene != null) { genericGene = handleSpecialCharacters(genericGene); solrQuery.addFilterQuery(ImageDTO.GENE_ID + ":\"" + genericGene + "\" OR " + ImageDTO.GENE_SYMBOL + ":\"" + genericGene + "\" OR " + ImageDTO.EXPRESSED_GF_ID_BAG + ":\"" + genericGene + "\" OR " + ImageDTO.EXPRESSED_GF_SYMBOL_BAG + ":\"" + genericGene + "\" OR " + ImageDTO.MUTANT_GENE_ID_BAG + ":\"" + genericGene + "\" OR " + ImageDTO.MUTANT_GENE_SYMBOL_BAG + ":\"" + genericGene + "\" OR " + ImageDTO.MUTANT_GENE_SYNONYMS_BAG + ":\"" + genericGene + "\""); } if (expressedGene != null) { expressedGene = handleSpecialCharacters(expressedGene); solrQuery.addFilterQuery(ImageDTO.EXPRESSED_GF_ID_BAG + ":\"" + expressedGene + "\" OR " + ImageDTO.EXPRESSED_GF_SYMBOL_BAG + ":\"" + expressedGene + "\""); } if (taxon != null) { taxon = handleSpecialCharacters(taxon); solrQuery.addFilterQuery( ImageDTO.TAXON + ":\"" + taxon + "\" OR " + ImageDTO.NCBI_TAXON_ID + ":\"" + taxon + "\""); } if (imageType != null) { imageType = handleSpecialCharacters(imageType); solrQuery.addFilterQuery(ImageDTO.IMAGE_TYPE + ":\"" + imageType + "\""); } if (sampleType != null) { sampleType = handleSpecialCharacters(sampleType); solrQuery.addFilterQuery(ImageDTO.SAMPLE_TYPE + ":\"" + sampleType + "\""); } if (stage != null) { stage = handleSpecialCharacters(stage); solrQuery.addFilterQuery(ImageDTO.STAGE + ":\"" + stage + "\" OR " + ImageDTO.STAGE_ID + ":\"" + stage + "\" OR " + ImageDTO.STAGE_ANCESTORS + ":\"" + stage + "\" OR " + ImageDTO.STAGE_FACET + ":\"" + stage + "\""); } if (sex != null) { sex = handleSpecialCharacters(sex); solrQuery.addFilterQuery(ImageDTO.SEX + ":\"" + sex + "\""); } if (chromosome != null) { solrQuery.addFilterQuery(ImageDTO.CHROMOSOME + ":" + chromosome); } if (position != null) { solrQuery.addFilterQuery("(" + ImageDTO.END_POS + ":[* TO " + position + "] AND " + ImageDTO.START_POS + ":[" + position + " TO *])"); } if (strand != null) { solrQuery.addFilterQuery(ImageDTO.STRAND + ":\"" + strand + "\""); } if (startPosition != null && endPosition != null) { solrQuery.addFilterQuery(ImageDTO.START_POS + ":[" + startPosition + " TO " + endPosition + "] OR " + ImageDTO.END_POS + ":[" + startPosition + " TO " + endPosition + "]"); ; } else if (startPosition != null && endPosition == null || startPosition == null && endPosition != null) { throw new PhisQueryException(PhisQueryException.START_END_POS); } if (rows != null) { solrQuery.setRows(rows); } else solrQuery.setRows(100); if (start != null) { solrQuery.set("start", start); } solrQuery.set("wt", "json"); solrQuery.setFacet(true); solrQuery.addFacetField(ImageDTO.STAGE_FACET); solrQuery.addFacetField(ImageDTO.IMAGING_METHOD_LABEL); solrQuery.addFacetField(ImageDTO.TAXON); solrQuery.addFacetField(ImageDTO.SAMPLE_TYPE); solrQuery.addFacetField(ImageDTO.IMAGE_GENERATED_BY); solrQuery.addFacetField(ImageDTO.HOST_NAME); solrQuery.addFacetField(ImageDTO.IMAGE_TYPE); solrQuery.setFacetMinCount(0); solrQuery.set("facet.pivot.mincount", 0); // add pivot facets to get the number of image types per solrQuery.set("facet.pivot", ImageDTO.SAMPLE_TYPE + "," + ImageDTO.IMAGE_TYPE); System.out.println("\nSolr URL : " + solr.getBaseURL() + "/select?" + solrQuery); log.info("Solr URL in getImages : " + solr.getBaseURL() + "/select?" + solrQuery); try { return JSONRestUtil.getResults(getQueryUrl(solrQuery)).toString(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } return "Couldn't get anything back from solr."; }
From source file:xc.mst.action.browse.BrowseRecords.java
License:Open Source License
/** * Search for records/* ww w . jav a 2s.c o m*/ */ public String browse() { RecordService recordService = (RecordService) MSTConfiguration.getInstance().getBean("RecordService"); if (log.isDebugEnabled()) { log.debug("User entered query::" + query); } try { SolrQuery solrQuery = new SolrQuery(); // If Query is empty retrieve all records if ((query == null) || (query.equals(""))) { solrQuery.setQuery("*:*"); } else { if (!StringUtils.isEmpty(identifier)) { String qFld = getIdentifiers().get(identifier); if (query.indexOf(" ") != -1) { query = "(" + query + ")"; } if (qFld != null) { query = query.replaceAll(":", "\\\\:"); // replacing with \\: and solr ends up thinking the token before : is a field // warning: replacing the 1st : (the delim between field and text) breaks // the search, no results returned. String q = new String(qFld + ":" + query); solrQuery.setQuery(q); if (log.isDebugEnabled()) { LOG.debug("*** browse() ident=" + qFld + " query=" + q); } } else { if (log.isDebugEnabled()) { LOG.debug("*** NO field associated with IDENTIFIER! " + " query=" + query + " identifier=" + identifier); } // solr schema: <copyField source="*_key" dest="text" /> if (query.indexOf(" ") != -1) { query = "(" + query + ")"; } // TODO having trouble getting this working, leave as a TODO for now, and drop back to default search on record_id. // (should never get here anyways, an identifier will always be picked. //solrQuery.setQuery("text:"+ query); solrQuery.setQuery(query.replaceAll(":", "\\\\:")); } } else { if (log.isDebugEnabled()) { LOG.debug("*** NO IDENTIFIER FOUND! " + " query=" + query); } solrQuery.setQuery("*:*"); } } StringTokenizer nameTokenizer = new StringTokenizer(selectedFacetNames, "|"); StringTokenizer valueTokenizer = new StringTokenizer(selectedFacetValues, "|"); while (nameTokenizer.hasMoreTokens()) { String name = nameTokenizer.nextToken(); String value = valueTokenizer.nextToken(); addFilterQuery(solrQuery, name, value); } // Add selected facet to query if (addFacetName != null && addFacetName.length() > 0) { addFilterQuery(solrQuery, addFacetName, addFacetValue); // Add facet names and values to | separated list selectedFacetNames = selectedFacetNames + "|" + addFacetName; selectedFacetValues = selectedFacetValues + "|" + addFacetValue; } // Remove selected facet from query if (removeFacetName != null && removeFacetName.length() > 0) { solrQuery.removeFilterQuery( removeFacetName + ":\"" + removeFacetValue.replaceAll(":", "\\\\:") + "\""); } if (log.isDebugEnabled()) { log.debug("Query after adding/removing facet ::" + query); log.debug("After Adding facet names ::" + selectedFacetNames); log.debug("After Adding facet values ::" + selectedFacetValues); } // Create facet names and values List StringTokenizer facetNameTokenizer = new StringTokenizer(selectedFacetNames, "|"); List<String> facetNamesList = new ArrayList<String>(); StringTokenizer facetValueTokenizer = new StringTokenizer(selectedFacetValues, "|"); List<String> facetValuesList = new ArrayList<String>(); StringBuffer newSelectedFacetNames = new StringBuffer(); StringBuffer newSelectedFacetValues = new StringBuffer(); String myNameToken = ""; String myValueToken = ""; while (facetNameTokenizer.hasMoreTokens()) { myNameToken = facetNameTokenizer.nextToken(); myValueToken = facetValueTokenizer.nextToken(); if (removeFacetName != null && removeFacetName.length() > 0) { // Create facet names String separated by | if (!(removeFacetName.equalsIgnoreCase(myNameToken) && removeFacetValue.equalsIgnoreCase(myValueToken))) { newSelectedFacetNames.append("|"); newSelectedFacetNames.append(myNameToken); facetNamesList.add(myNameToken); newSelectedFacetValues.append("|"); newSelectedFacetValues.append(myValueToken); facetValuesList.add(myValueToken); } } else { facetNamesList.add(myNameToken); facetValuesList.add(myValueToken); } } if (removeFacetValue != null && removeFacetValue.length() > 0) { selectedFacetNames = newSelectedFacetNames.toString(); selectedFacetValues = newSelectedFacetValues.toString(); } if (log.isDebugEnabled()) { log.debug("After removing facet names(final):" + selectedFacetNames); log.debug("After removing facet values(final):" + selectedFacetValues); } // Query formation solrQuery.setFacet(true).setFacetMinCount(1); solrQuery.addFacetField("status"); solrQuery.addFacetField("provider_name"); solrQuery.addFacetField("service_name"); solrQuery.addFacetField("format_name"); solrQuery.addFacetField("set_name"); solrQuery.addFacetField("error"); // Fields to load solrQuery.addField(RecordService.FIELD_RECORD_ID); solrQuery.addField(RecordService.FIELD_FORMAT_ID); solrQuery.addField(RecordService.FIELD_PROVIDER_ID); solrQuery.addField(RecordService.FIELD_SERVICE_ID); solrQuery.addField(RecordService.FIELD_HARVEST_SCHEDULE_NAME); solrQuery.addField(RecordService.FIELD_ERROR); solrQuery.addField(RecordService.FIELD_PROCESSED_FROM); solrQuery.addField(RecordService.FIELD_SUCCESSOR); solrQuery.addField(RecordService.FIELD_OAI_IDENTIFIER); getIdentifiers(); rowEnd = rowStart + numberOfResultsToShow; // In initial page load, we are not going to show any records. Only facets will be shown if (isInitialLoad) { solrQuery.setStart(0); solrQuery.setRows(0); } else { solrQuery.setStart(rowStart); solrQuery.setRows(numberOfResultsToShow); } BrowseRecordService browseRecordService = (BrowseRecordService) MSTConfiguration.getInstance() .getBean("BrowseRecordService"); result = browseRecordService.search(solrQuery); if (log.isDebugEnabled()) { log.debug("Search result::" + result); } if ((result != null) && (rowEnd > result.getTotalNumberOfResults())) { rowEnd = result.getTotalNumberOfResults(); } // Add facet name and value list to SolrBrowseResult(result) object for display in UI if (result != null) { for (int i = 0; i < facetNamesList.size(); i++) { // Get successor/predecessor of the record to display its information if (facetNamesList.get(i).equalsIgnoreCase("successor")) { successorRecord = recordService.getById(Long.parseLong(facetValuesList.get(i))); } if (facetNamesList.get(i).equalsIgnoreCase("processed_from")) { predecessorRecord = recordService.getById(Long.parseLong(facetValuesList.get(i))); } result.addFacetFilter(new FacetFilter(facetNamesList.get(i), facetValuesList.get(i))); } } } catch (DatabaseConfigException dce) { log.error( "Search failed. Problem with connecting to database using the parameters in configuration file.", dce); errorType = "error"; addFieldError("dbError", "Search failed.Problem with connecting to database using the parameters in configuration file."); return INPUT; } catch (IndexException ie) { log.error("Search failed. Problem with connecting to Solr server. Check the path to solr folder.", ie); errorType = "error"; addFieldError("dbError", "Search failed. Problem with connecting to Solr server. Check the path to solr folder."); return INPUT; } return SUCCESS; }