List of usage examples for org.apache.solr.client.solrj SolrQuery add
public ModifiableSolrParams add(String name, String... val)
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public Set<String> getChartPivots(String baseUrl, String acc, String parameterStableId, List<String> pipelineStableIds, List<String> zyList, List<String> phenotypingCentersList, List<String> strainsParams, List<String> metaDataGroup, List<String> alleleAccession) throws IOException, SolrServerException, URISyntaxException { SolrQuery query = new SolrQuery(); query.setQuery("*:*"); if (acc != null) { query.addFilterQuery(StatisticalResultDTO.MARKER_ACCESSION_ID + ":\"" + acc + "\""); }/* ww w . j a v a 2 s . co m*/ if ((parameterStableId != null) && (!parameterStableId.trim().isEmpty())) { query.addFilterQuery(StatisticalResultDTO.PARAMETER_STABLE_ID + ":" + parameterStableId); } if (pipelineStableIds != null & pipelineStableIds.size() > 0) { query.addFilterQuery(pipelineStableIds.stream() .collect(Collectors.joining(" OR ", StatisticalResultDTO.PIPELINE_STABLE_ID + ":(", ")"))); } if (zyList != null && zyList.size() > 0) { query.addFilterQuery( zyList.stream().collect(Collectors.joining(" OR ", StatisticalResultDTO.ZYGOSITY + ":(", ")"))); } if (phenotypingCentersList != null && phenotypingCentersList.size() > 0) { query.addFilterQuery(phenotypingCentersList.stream().collect( Collectors.joining("\" OR \"", StatisticalResultDTO.PHENOTYPING_CENTER + ":(\"", "\")"))); } if (strainsParams != null && strainsParams.size() > 0) { query.addFilterQuery(strainsParams.stream().collect( Collectors.joining("\" OR \"", StatisticalResultDTO.STRAIN_ACCESSION_ID + ":(\"", "\")"))); } if (metaDataGroup != null && metaDataGroup.size() > 0) { query.addFilterQuery(metaDataGroup.stream() .collect(Collectors.joining("\" OR \"", StatisticalResultDTO.METADATA_GROUP + ":(\"", "\")"))); } if (alleleAccession != null && alleleAccession.size() > 0) { query.addFilterQuery(alleleAccession.stream().collect( Collectors.joining("\" OR \"", StatisticalResultDTO.ALLELE_ACCESSION_ID + ":(\"", "\")"))); } query.setFacet(true); // If you add/change order of pivots, make sure you do the same in the for loops below String pivotFacet = StatisticalResultDTO.PIPELINE_STABLE_ID + "," + StatisticalResultDTO.ZYGOSITY + "," + StatisticalResultDTO.PHENOTYPING_CENTER + "," + StatisticalResultDTO.STRAIN_ACCESSION_ID + "," + StatisticalResultDTO.ALLELE_ACCESSION_ID; //pivot needs to have metadata_group irrespective of if it's included in filter or not as we want seperate experiments based on the metadata pivotFacet += "," + StatisticalResultDTO.METADATA_GROUP; //} query.add("facet.pivot", pivotFacet); query.setFacetLimit(-1); Set<String> resultParametersForCharts = new HashSet<>(); System.out.println("SR facet pivot query=" + query); NamedList<List<PivotField>> facetPivot = statisticalResultCore.query(query).getFacetPivot(); for (PivotField pivot : facetPivot.get(pivotFacet)) { getParametersForChartFromPivot(pivot, baseUrl, resultParametersForCharts); } return resultParametersForCharts; }
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public HashMap<String, GeneRowForHeatMap> getSecondaryProjectMapForGeneList(Set<String> geneAccessions, List<BasicBean> topLevelMps) throws IOException, SolrServerException { HashMap<String, GeneRowForHeatMap> geneRowMap = new HashMap<>(); // <geneAcc, row> SolrQuery q = new SolrQuery() .setQuery(geneAccessions.stream().collect( Collectors.joining("\" OR \"", StatisticalResultDTO.MARKER_ACCESSION_ID + ":(\"", "\")"))) .addField(StatisticalResultDTO.PROCEDURE_STABLE_ID) .addField(StatisticalResultDTO.MARKER_ACCESSION_ID) .addField(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME).addField(StatisticalResultDTO.MP_TERM_NAME) .addField(StatisticalResultDTO.MARKER_SYMBOL).addField(StatisticalResultDTO.STATUS) .addField(StatisticalResultDTO.SIGNIFICANT).setRows(Integer.MAX_VALUE) .setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc); q.addFilterQuery(StatisticalResultDTO.MP_TERM_ID + ":*"); // Ignore MPATH or other types of associations q.add("group", "true"); q.add("group.field", StatisticalResultDTO.MARKER_ACCESSION_ID); q.set("group.limit", Integer.MAX_VALUE); GroupCommand groups = statisticalResultCore.query(q, SolrRequest.METHOD.POST).getGroupResponse().getValues() .get(0);// w w w . j a v a 2 s.co m for (Group group : groups.getValues()) { // Each group contains data for a different gene String geneAcc = group.getGroupValue(); SolrDocumentList docs = group.getResult(); GeneRowForHeatMap row = new GeneRowForHeatMap(geneAcc, docs.get(0).getFieldValue(StatisticalResultDTO.MARKER_SYMBOL).toString(), topLevelMps); // Fill row with default values for all mp top levels for (SolrDocument doc : docs) { List<String> currentTopLevelMps = (ArrayList<String>) doc .get(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME); // The current top level might be null, because the actual term is already a top level, // check the associated mp term to see, and add it if it's already top-level if (currentTopLevelMps == null) { if (topLevelMps.stream().anyMatch(x -> x.getName() .equals(doc.getFieldValue(StatisticalResultDTO.MP_TERM_NAME).toString()))) { currentTopLevelMps = new ArrayList<>(); currentTopLevelMps.add(doc.getFieldValue(StatisticalResultDTO.MP_TERM_NAME).toString()); } } // The term might have been annotated to "mammalian phenotype" which doesn't have an icon in the grid. Skip it if (currentTopLevelMps != null) { for (String mp : currentTopLevelMps) { HeatMapCell cell = row.getXAxisToCellMap().containsKey(mp) ? row.getXAxisToCellMap().get(mp) : new HeatMapCell(mp, HeatMapCell.THREE_I_NO_DATA); if (doc.getFieldValue(StatisticalResultDTO.SIGNIFICANT) != null && doc.getFieldValue(StatisticalResultDTO.SIGNIFICANT).toString() .equalsIgnoreCase("true")) { cell.addStatus(HeatMapCell.THREE_I_DEVIANCE_SIGNIFICANT); } else if (doc.getFieldValue(StatisticalResultDTO.STATUS).toString().equals("Success")) { cell.addStatus(HeatMapCell.THREE_I_DATA_ANALYSED_NOT_SIGNIFICANT); } else { cell.addStatus(HeatMapCell.THREE_I_COULD_NOT_ANALYSE); } row.add(cell); } } } geneRowMap.put(geneAcc, row); } return geneRowMap; }
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public List<GeneRowForHeatMap> getSecondaryProjectMapForResource(String resourceName) { List<GeneRowForHeatMap> res = new ArrayList<>(); HashMap<String, GeneRowForHeatMap> geneRowMap = new HashMap<>(); // <geneAcc, row> List<BasicBean> procedures = getProceduresForDataSource(resourceName); for (BasicBean procedure : procedures) { SolrQuery q = new SolrQuery().setQuery(StatisticalResultDTO.RESOURCE_NAME + ":\"" + resourceName + "\"") .addFilterQuery(StatisticalResultDTO.PROCEDURE_STABLE_ID + ":" + procedure.getId()) .setSort(StatisticalResultDTO.P_VALUE, SolrQuery.ORDER.asc) .addField(StatisticalResultDTO.PROCEDURE_STABLE_ID) .addField(StatisticalResultDTO.MARKER_ACCESSION_ID).addField(StatisticalResultDTO.MARKER_SYMBOL) .addField(StatisticalResultDTO.STATUS).addField(StatisticalResultDTO.P_VALUE).setRows(10000000) .setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc); q.add("group", "true"); q.add("group.field", StatisticalResultDTO.MARKER_ACCESSION_ID); q.add("group.sort", StatisticalResultDTO.P_VALUE + " asc"); try {//from w ww . ja v a 2 s .co m GroupCommand groups = statisticalResultCore.query(q).getGroupResponse().getValues().get(0); for (Group group : groups.getValues()) { GeneRowForHeatMap row; HeatMapCell cell = new HeatMapCell(); SolrDocument doc = group.getResult().get(0); String geneAcc = doc.get(StatisticalResultDTO.MARKER_ACCESSION_ID).toString(); Map<String, HeatMapCell> xAxisToCellMap = new HashMap<>(); if (geneRowMap.containsKey(geneAcc)) { row = geneRowMap.get(geneAcc); xAxisToCellMap = row.getXAxisToCellMap(); } else { row = new GeneRowForHeatMap(geneAcc); row.setSymbol(doc.get(StatisticalResultDTO.MARKER_SYMBOL).toString()); xAxisToCellMap.put(procedure.getId(), null); } cell.setxAxisKey(doc.get(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString()); if (doc.getFieldValue(StatisticalResultDTO.P_VALUE) != null && Double .valueOf(doc.getFieldValue(StatisticalResultDTO.P_VALUE).toString()) < 0.0001) { cell.addStatus(HeatMapCell.THREE_I_DEVIANCE_SIGNIFICANT); } else if (doc.getFieldValue(StatisticalResultDTO.STATUS).toString().equals("Success")) { cell.addStatus(HeatMapCell.THREE_I_DATA_ANALYSED_NOT_SIGNIFICANT); } else { cell.addStatus(HeatMapCell.THREE_I_COULD_NOT_ANALYSE); } xAxisToCellMap.put(doc.getFieldValue(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString(), cell); row.setXAxisToCellMap(xAxisToCellMap); geneRowMap.put(geneAcc, row); } } catch (SolrServerException | IOException ex) { logger.error(ex.getMessage()); } } res = new ArrayList<>(geneRowMap.values()); Collections.sort(res, new GeneRowForHeatMap3IComparator()); return res; }
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public Map<String, List<String>> getParametersToProcedureMap(String alleleAccession, String geneAccession, String resourceName, String phenotypingCenter, String pipelineSrableId, String procedure) throws SolrServerException, IOException { Map<String, List<String>> res = new ConcurrentHashMap<>(); //<parameter, <genes>> SolrQuery q = new SolrQuery().setQuery("*:*"); q.add("fl", StatisticalResultDTO.PARAMETER_NAME + "," + StatisticalResultDTO.PARAMETER_STABLE_ID); if (resourceName != null) { q.addFilterQuery(StatisticalResultDTO.RESOURCE_NAME + ":\"" + resourceName + "\""); }/* w w w. j av a 2 s.c om*/ if (phenotypingCenter != null) { q.addFilterQuery(StatisticalResultDTO.PHENOTYPING_CENTER + ":\"" + phenotypingCenter + "\""); } if (pipelineSrableId != null) { q.addFilterQuery(StatisticalResultDTO.PIPELINE_STABLE_ID + ":\"" + pipelineSrableId + "\""); } String pivotFacet = StatisticalResultDTO.PROCEDURE_NAME + "," + StatisticalResultDTO.PARAMETER_STABLE_ID; q.set("facet.pivot", pivotFacet); q.setFacet(true); q.setRows(1); q.set("facet.limit", -1); logger.info("Solr url for getParametersToProcedureMap " + SolrUtils.getBaseURL(statisticalResultCore) + "/select?" + q); QueryResponse response = statisticalResultCore.query(q); for (PivotField pivot : response.getFacetPivot().get(pivotFacet)) { if (pivot.getPivot() != null) { List<String> lst = new ArrayList<>(); for (PivotField gene : pivot.getPivot()) { lst.add(gene.getValue().toString()); } res.put(pivot.getValue().toString(), new ArrayList<String>(lst)); } } return res; }
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public List<BasicBean> getProceduresForDataSource(String resourceName) { List<BasicBean> res = new ArrayList<BasicBean>(); SolrQuery q = new SolrQuery().setQuery(StatisticalResultDTO.RESOURCE_NAME + ":\"" + resourceName + "\"") .setRows(10000);/*w ww . j ava 2 s.co m*/ q.add("group", "true"); q.add("group.field", StatisticalResultDTO.PROCEDURE_NAME); q.add("group.rows", "1"); q.add("fl", StatisticalResultDTO.PROCEDURE_NAME + "," + StatisticalResultDTO.PROCEDURE_STABLE_ID); logger.info("Procedure query " + SolrUtils.getBaseURL(statisticalResultCore) + "/select?" + q); try { GroupCommand groups = statisticalResultCore.query(q).getGroupResponse().getValues().get(0); for (Group group : groups.getValues()) { BasicBean bb = new BasicBean(); SolrDocument doc = group.getResult().get(0); bb.setName(doc.getFieldValue(StatisticalResultDTO.PROCEDURE_NAME).toString()); bb.setId(doc.getFieldValue(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString()); res.add(bb); } } catch (SolrServerException | IOException ex) { logger.error(ex.getMessage()); } return res; }
From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java
License:Apache License
public Integer getParameterCountByGene(String acc) throws IOException, SolrServerException { SolrQuery query = new SolrQuery("p_value:[* TO *] AND marker_accession_id:\"" + acc + "\""); query.add("group", "true"); query.add("group.ngroups", "true"); query.add("group.field", StatisticalResultDTO.PARAMETER_NAME); QueryResponse result = statisticalResultCore.query(query); return result.getGroupResponse().getValues().get(0).getNGroups(); }
From source file:org.opencms.search.solr.TestSolrSearch.java
License:Open Source License
/** * @throws Throwable if something goes wrong */// w w w . ja v a 2 s . com public void testAdvancedFacetting() throws Throwable { echo("Testing facet query count"); // creating the query: facet=true&facet.field=Title_exact&facet.mincount=1&facet.query=text:OpenCms&rows=0 SolrQuery query = new CmsSolrQuery(getCmsObject(), null); // facet=true query.setFacet(true); // facet.field=Title_exact query.addFacetField("Title_exact"); // facet.mincount=1 query.add("facet.mincount", "1"); // facet.query=text:OpenCms query.addFacetQuery("text:OpenCms"); // facet.query=Title_prop:OpenCms query.addFacetQuery("Title_prop:OpenCms"); // rows=0 query.setRows(new Integer(0)); CmsSolrIndex index = OpenCms.getSearchManager().getIndexSolr(AllTests.SOLR_ONLINE); CmsSolrResultList results = index.search(getCmsObject(), query); long facetTextCount = results.getFacetQuery().get("text:OpenCms").intValue(); long facetTitleCount = results.getFacetQuery().get("Title_prop:OpenCms").intValue(); echo("Found '" + results.getFacetField("Title_exact").getValueCount() + "' facets for the field \"Title_exact\" and '" + facetTextCount + "' of them containing the word: \"OpenCms\" in the field 'text' and '" + facetTitleCount + "' of them containing the word \"OpenCms\" in the field 'Title_prop!'"); query = new CmsSolrQuery(getCmsObject(), CmsRequestUtil.createParameterMap("q=text:OpenCms")); results = index.search(getCmsObject(), query); long numExpected = results.getNumFound(); assertEquals(numExpected, facetTextCount); echo("Great Solr works fine!"); }
From source file:org.opengeoportal.harvester.api.client.solr.SolrSearchParams.java
License:Open Source License
/** * Transform the record in {@link SolrQuery} executable by an * {@link org.apache.solr.client.solrj.impl.HttpSolrServer}. * /*w ww. j a va 2 s . c o m*/ * @return the {@link SolrQuery} built with the data page this. */ public SolrQuery toSolrQuery() { SolrQuery solrQuery = new SolrQuery(); if (StringUtils.isNotBlank(customSolrQuery)) { solrQuery.setQuery(customSolrQuery); } else { solrQuery.setQuery("*:*"); // data repositories if (dataRepositories != null && dataRepositories.size() > 0) { Criteria institutionCriteria = null; for (String institution : dataRepositories) { if (institutionCriteria == null) { institutionCriteria = new Criteria(SolrRecord.INSTITUTION).is(institution); } else { institutionCriteria = institutionCriteria .or(new Criteria(SolrRecord.INSTITUTION).is(institution)); } } SimpleQuery query = new SimpleQuery(institutionCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } else { solrQuery.addFilterQuery(SolrRecord.INSTITUTION + ":*"); } // theme keywords if (StringUtils.isNotBlank(themeKeyword)) { solrQuery.addFilterQuery(SolrRecord.THEME_KEYWORDS + ":" + themeKeyword); solrQuery.add(PF, SolrRecord.THEME_KEYWORDS + ":'" + themeKeyword + "'^9.0"); solrQuery.add(PF, SolrRecord.LAYER_DISPLAY_NAME + ":'" + themeKeyword + "'^9.0"); } if (StringUtils.isNotBlank(placeKeyword)) { solrQuery.addFilterQuery(SolrRecord.PLACE_KEYWORDS + ":" + placeKeyword); solrQuery.add(PF, SolrRecord.PLACE_KEYWORDS + ":'" + placeKeyword + "'^9.0"); } if (StringUtils.isNotBlank(topicCategory)) { solrQuery.addFilterQuery(SolrRecord.ISO_TOPIC_CATEGORY + ":" + this.topicCategory); } if (dateFrom != null || dateTo != null) { Criteria contentDateCriteria = Criteria.where(SolrRecord.CONTENT_DATE).between(dateFrom, dateTo); SimpleQuery query = new SimpleQuery(contentDateCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } if (StringUtils.isNotBlank(originator)) { String originatorCriteria = splitAndConcatenateUsingOperator(Operator.AND, SolrRecord.ORIGINATOR, originator); solrQuery.addFilterQuery(originatorCriteria); solrQuery.add(PF, SolrRecord.ORIGINATOR + ":" + originator); } if (dataTypes != null && dataTypes.size() > 0) { StringBuilder concatenatedType = new StringBuilder(); for (DataType dType : dataTypes) { concatenatedType.append(dType.toString().replace(" ", "+")).append(" "); } String dataTypeCriteria = splitAndConcatenateUsingOperator(Operator.OR, SolrRecord.DATA_TYPE, concatenatedType.toString()); solrQuery.add("fq", dataTypeCriteria); } if (excludeRestrictedData) { solrQuery.addFilterQuery(SolrRecord.ACCESS + ":" + AccessLevel.Public); } if (fromSolrTimestamp != null || toSolrTimestamp != null) { Criteria solrTimestampCriteria = Criteria.where(SolrRecord.TIMESTAMP).between(fromSolrTimestamp, toSolrTimestamp); SimpleQuery query = new SimpleQuery(solrTimestampCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } // Add bbox filter only if user has not specified a custom solr // query. buildBoundigBoxQuery(solrQuery); String synonymsFilter = generateSynonymsQuery(); if (StringUtils.isNotBlank(synonymsFilter)) { solrQuery.addFilterQuery(synonymsFilter); } } solrQuery.setRows(pageSize); solrQuery.setStart(page * pageSize); solrQuery.addSort(SortClause.desc("score")); return solrQuery; }
From source file:org.orcid.persistence.dao.impl.SolrDaoImpl.java
License:Open Source License
@Override public Reader findByOrcidAsReader(String orcid) { SolrQuery query = new SolrQuery(); query.setQuery(ORCID + ":\"" + orcid + "\"").setFields(SCORE, ORCID, PUBLIC_PROFILE); query.add("wt", "orcidProfile"); try {/*from ww w. j a v a 2s .co m*/ QueryResponse queryResponse = solrServerForStreaming.query(query); InputStream inputStream = (InputStream) queryResponse.getResponse().get("stream"); return new InputStreamReader(inputStream, "UTF-8"); } catch (SolrServerException | SolrException e) { String errorMessage = MessageFormat.format("Error when attempting to retrieve stream for orcid {0}", new Object[] { orcid }); throw new NonTransientDataAccessResourceException(errorMessage, e); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }
From source file:org.orcid.persistence.dao.impl.SolrDaoImpl.java
License:Open Source License
@Override public OrcidSolrResults findByDocumentCriteria(Map<String, List<String>> queryMap) { OrcidSolrResults orcidSolrResults = new OrcidSolrResults(); List<OrcidSolrResult> orcidSolrResultsList = new ArrayList<>(); orcidSolrResults.setResults(orcidSolrResultsList); SolrQuery solrQuery = new SolrQuery(); for (Map.Entry<String, List<String>> entry : queryMap.entrySet()) { String queryKey = entry.getKey(); List<String> queryVals = entry.getValue(); solrQuery.add(queryKey, queryVals.get(0)); }// w w w .j a v a2s . c o m solrQuery.setFields(SCORE, ORCID); return querySolr(solrQuery); }