Example usage for org.apache.solr.client.solrj SolrQuery setFacetLimit

List of usage examples for org.apache.solr.client.solrj SolrQuery setFacetLimit

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setFacetLimit.

Prototype

public SolrQuery setFacetLimit(int lim) 

Source Link

Document

set the facet limit

Usage

From source file:org.mousephenotype.cda.solr.service.ObservationService.java

License:Apache License

public NamedList<List<PivotField>> getHistopathGeneParameterNameCategoryPivots()
        throws SolrServerException, IOException {

    //http://ves-hx-d1.ebi.ac.uk:8986/solr/experiment/select?q=*:*&rows=0&sort=id+asc&fq=parameter_stable_id:*HIS*&facet=true&facet.pivot=gene_symbol,category&facet.limit=-1
    //we need the significance score only can't filter based on a parameter ids as all different for each anatomy but can do search for "Significance score " in parameter_name string
    SolrQuery q = new SolrQuery().setQuery("*:*").setRows(0)//we don't care about the observations themselfs so don't return them only which anatomy has significant Histopath data on which genes.
            .setSort(ObservationDTO.ID, SolrQuery.ORDER.asc)
            //.setFields(fields)
            .addFilterQuery("parameter_stable_id:*HIS*").addFilterQuery("parameter_name:*Significance*");//.addFilterQuery("gene_symbol:Prkab1");
    //.addFilterQuery("category:Significant");
    //.addFilterQuery("category:Significant");//otherwise query takes too long
    q.setFacet(true);//  www.  j  av a  2  s  . c o m
    String pivotFacet = ObservationDTO.GENE_SYMBOL + "," + ObservationDTO.PARAMETER_NAME + ","
            + ObservationDTO.CATEGORY;

    q.add("facet.pivot", pivotFacet);
    q.setFacetLimit(-1);
    System.out.println("solr query in getObservationByProcedureNameAndGene=" + q);
    return experimentCore.query(q).getFacetPivot();
}

From source file:org.mousephenotype.cda.solr.service.ObservationService.java

License:Apache License

/**
 * Get stats for the baseline graphs on the phenotype pages for each parameter/center
 * if phenotypingCenter is null just return all stats for the center otherwise filter on that center
 *///  w w w.  j a  va  2 s.  c  om
public List<FieldStatsInfo> getStatisticsForParameterFromCenter(String parameterStableId,
        String phenotypingCenter) throws SolrServerException, IOException {
    //http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/experiment/select?q=*:*&stats=true&stats.field=data_point&stats.facet=parameter_stable_id&rows=0&indent=true&fq=phenotyping_center:HMGU&fq=parameter_stable_id:IMPC_CBC_010_001
    //http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/experiment/select?q=*:*&stats=true&stats.field=data_point&stats.facet=phenotyping_center&rows=0&indent=true&fq=parameter_stable_id:IMPC_CBC_010_001
    logger.debug("calling getStats for baseline");
    SolrQuery query = new SolrQuery().setQuery("*:*");
    query.setGetFieldStatistics(true);
    query.setGetFieldStatistics(ObservationDTO.DATA_POINT);
    query.setParam("stats.facet", ObservationDTO.PHENOTYPING_CENTER);
    query.setFacetLimit(-1);
    query.addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":control");
    if (parameterStableId != null) {
        query.addFilterQuery(ObservationDTO.PARAMETER_STABLE_ID + ":" + parameterStableId);
    }

    if (phenotypingCenter != null) {
        query.addFilterQuery(ObservationDTO.PHENOTYPING_CENTER + ":\"" + phenotypingCenter + "\"");
    }

    query.setRows(0);

    logger.debug("SOLR URL getPipelines " + SolrUtils.getBaseURL(experimentCore) + "/select?" + query);

    QueryResponse response = experimentCore.query(query);
    FieldStatsInfo statsInfo = response.getFieldStatsInfo().get(ObservationDTO.DATA_POINT);
    Map<String, List<FieldStatsInfo>> facetToStatsMap = statsInfo.getFacets();

    List<FieldStatsInfo> centerStatsList = null;
    //just get the first result as we only expect 1
    for (String facet : facetToStatsMap.keySet()) {
        centerStatsList = facetToStatsMap.get(facet);
    }

    return centerStatsList;

}

From source file:org.mousephenotype.cda.solr.service.ObservationService.java

License:Apache License

public Set<String> getChartPivots(String baseUrl, String acc, ParameterDTO parameter,
        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("gene_accession_id" + ":\"" + acc + "\"");
    }/*from   ww w.ja  va 2s .c om*/
    if (parameter != null) {
        query.addFilterQuery(StatisticalResultDTO.PARAMETER_STABLE_ID + ":" + parameter.getStableId());
    }
    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;
    if (metaDataGroup != null && metaDataGroup.size() > 0) {
        pivotFacet += "," + StatisticalResultDTO.METADATA_GROUP;

    }
    query.add("facet.pivot", pivotFacet);

    query.setFacetLimit(-1);

    Set<String> resultParametersForCharts = new HashSet<>();
    NamedList<List<PivotField>> facetPivot = experimentCore.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 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 + "\"");
    }//from  w  ww.ja  v a 2  s . c  o 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

/**
 *
 * @param geneAccessionId// www  .j  a  va2  s  .  c o  m
 * @return Basic information for allele pages in an AllelePageDTO
 */
public AllelePageDTO getAllelesInfo(String geneAccessionId, List<String> alleleSymbol,
        List<String> phenotypingCenter, List<String> pipelineName, List<String> procedureStableId,
        List<String> procedureName, List<String> mpTermIds, ArrayList<String> resource) {

    AllelePageDTO dto = new AllelePageDTO();
    SolrQuery q = buildQuery(geneAccessionId, procedureName, alleleSymbol, phenotypingCenter, pipelineName,
            procedureStableId, resource, mpTermIds, null, null, null, null, null, null, null, null);

    q.addField(StatisticalResultDTO.MARKER_SYMBOL);
    q.addField(StatisticalResultDTO.MARKER_ACCESSION_ID);
    q.addFilterQuery(StatisticalResultDTO.P_VALUE + ":[* TO *]");
    q.setFacet(true);
    q.setFacetLimit(-1);
    q.setFacetMinCount(1);
    q.addFacetField(StatisticalResultDTO.PHENOTYPING_CENTER);
    q.addFacetField(StatisticalResultDTO.PIPELINE_NAME);
    q.addFacetField(StatisticalResultDTO.ALLELE_SYMBOL);
    q.setRows(1);

    String pivotFacet = StatisticalResultDTO.PROCEDURE_NAME + "," + StatisticalResultDTO.PARAMETER_STABLE_ID;
    q.set("facet.pivot", pivotFacet);
    q.set("facet.pivot.mincount", 1);

    try {
        QueryResponse res = statisticalResultCore.query(q);

        FacetField phenotypingCenters = res.getFacetField(StatisticalResultDTO.PHENOTYPING_CENTER);

        for (Count facet : phenotypingCenters.getValues()) {
            dto.addPhenotypingCenter(facet.getName());
        }

        FacetField alleles = statisticalResultCore.query(q).getFacetField(StatisticalResultDTO.ALLELE_SYMBOL);
        for (Count facet : alleles.getValues()) {
            dto.addAlleleSymbol(facet.getName());
        }

        FacetField pipelines = statisticalResultCore.query(q).getFacetField(StatisticalResultDTO.PIPELINE_NAME);
        for (Count facet : pipelines.getValues()) {
            dto.addPipelineName(facet.getName());
        }

        for (PivotField pivot : res.getFacetPivot().get(pivotFacet)) {
            if (pivot.getPivot() != null) {
                List<String> lst = new ArrayList<>();
                for (PivotField gene : pivot.getPivot()) {
                    lst.add(gene.getValue().toString());
                }
                dto.addParametersByProcedure(pivot.getValue().toString(), new ArrayList<>(lst));
                dto.addProcedureNames(pivot.getValue().toString());
            }
        }

        SolrDocument doc = res.getResults().get(0);
        dto.setGeneSymbol(doc.getFieldValue(StatisticalResultDTO.MARKER_SYMBOL).toString());
        dto.setGeneAccession(geneAccessionId);

    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
    }

    return dto;

}

From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java

License:Apache License

public TreeMap<String, ParallelCoordinatesDTO> getGenotypeEffectFor(List<String> procedureStableId,
        List<String> phenotypingCenters, Boolean requiredParamsOnly, String baseUrl, List<String> genes,
        String topLevelMpId) throws SolrServerException, IOException, URISyntaxException {

    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    if (procedureStableId != null) {
        query.addFilterQuery(StatisticalResultDTO.PROCEDURE_STABLE_ID + ":"
                + StringUtils.join(procedureStableId, "* OR " + StatisticalResultDTO.PROCEDURE_STABLE_ID + ":")
                + "*");
    }// w  w  w  . j  a  v  a 2s. co m
    query.addFilterQuery(StatisticalResultDTO.DATA_TYPE + ":unidimensional");
    query.setFacet(true);
    query.setFacetMinCount(1);
    query.setFacetLimit(-1);
    query.addFacetField(StatisticalResultDTO.PARAMETER_STABLE_ID);
    query.addFacetField(StatisticalResultDTO.PARAMETER_NAME);

    if (phenotypingCenters != null && phenotypingCenters.size() > 0) {
        query.addFilterQuery(StatisticalResultDTO.PHENOTYPING_CENTER + ":\"" + StringUtils
                .join(phenotypingCenters, "\" OR " + StatisticalResultDTO.PHENOTYPING_CENTER + ":\"") + "\"");
    }

    List<String> parameterStableIds = new ArrayList<>(getFacets(statisticalResultCore.query(query))
            .get(StatisticalResultDTO.PARAMETER_STABLE_ID).keySet());
    TreeSet<ParameterDTO> parameterUniqueByStableId = new TreeSet<>(ParameterDTO.getComparatorByName());

    for (ParameterDTO param : impressService.getParameters(procedureStableId, "unidimensional", topLevelMpId)) {
        if (parameterStableIds.contains(param.getStableId()) && (param.isRequired() || !requiredParamsOnly)
                && !parameterUniqueByStableId.contains(param)) {
            parameterUniqueByStableId.add(param);
        }
    }

    List<ParameterDTO> parameters = new ArrayList<>(parameterUniqueByStableId);
    Map<String, ParameterDTO> parameterMap = new HashMap<>();
    for (ParameterDTO p : parameterUniqueByStableId) {
        parameterMap.put(p.getStableId(), p);
    }

    query = new SolrQuery();
    query.setQuery("-" + StatisticalResultDTO.STATISTICAL_METHOD + ":Wilcoxon*"); // Decided to omit Wilcoxon because it does not adjust for batch or center effect and the value for genotyope effect does not have the same meaning as for the other values.
    query.addFilterQuery(StatisticalResultDTO.PARAMETER_STABLE_ID + ":\""
            + StringUtils.join(parameters.stream().map(ParameterDTO::getStableId).collect(Collectors.toList()),
                    "\" OR " + StatisticalResultDTO.PARAMETER_STABLE_ID + ":\"")
            + "\"");
    query.addFilterQuery(StatisticalResultDTO.STATUS + ":Success");

    query.addField(StatisticalResultDTO.GENOTYPE_EFFECT_PARAMETER_ESTIMATE);
    query.addField(StatisticalResultDTO.MARKER_ACCESSION_ID);
    query.addField(StatisticalResultDTO.PARAMETER_STABLE_ID);
    query.addField(StatisticalResultDTO.FEMALE_KO_PARAMETER_ESTIMATE);
    query.addField(StatisticalResultDTO.MALE_KO_PARAMETER_ESTIMATE);
    query.addField(StatisticalResultDTO.PHENOTYPING_CENTER);
    query.addField(StatisticalResultDTO.PROCEDURE_NAME);
    query.addField(StatisticalResultDTO.MARKER_SYMBOL);
    query.addField(StatisticalResultDTO.SIGNIFICANT);
    query.setRows(Integer.MAX_VALUE);
    query.setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc);

    if (phenotypingCenters != null && phenotypingCenters.size() > 0) {
        query.addFilterQuery(StatisticalResultDTO.PHENOTYPING_CENTER + ":\"" + StringUtils
                .join(phenotypingCenters, "\" OR " + StatisticalResultDTO.PHENOTYPING_CENTER + ":\"") + "\"");
    }

    if (genes != null) {
        query.addFilterQuery(StatisticalResultDTO.MARKER_SYMBOL + ":(\""
                + genes.stream().collect(Collectors.joining("\" OR \"")) + "\")");
    }

    List<StatisticalResultDTO> result = statisticalResultCore.query(query, SolrRequest.METHOD.POST)
            .getBeans(StatisticalResultDTO.class);
    TreeMap<String, ParallelCoordinatesDTO> row = addMaxGenotypeEffects(result, parameterMap, baseUrl);
    row = addMeanValues(row, parameters);
    row = addDefaultValues(row, parameters); // add normal/no effect values after mean so that they're not used in the computation

    return row;

}

From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java

License:Apache License

/**
 * @return Map <String, Long> : <top_level_mp_name, number_of_annotations>
 * @author tudose/* w w  w .  java 2  s  .c o  m*/
 */
public TreeMap<String, Long> getDistributionOfAnnotationsByMPTopLevel(List<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 = statisticalResultCore.query(query);
        TreeMap<String, Long> res = new TreeMap<>();
        res.putAll(getFacets(response).get(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME));
        return res;
    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
    }
    return null;
}

From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java

License:Apache License

public Map<String, Set<String>> getAccessionProceduresMap(String resourceName) {

    SolrQuery query = new SolrQuery();
    Map<String, Set<String>> res = new HashMap<>();
    NamedList<List<PivotField>> response;

    if (resourceName == null) {
        query.setQuery("*:*");
    } else {//w  w w .  j a va 2  s  . com
        query.setQuery(StatisticalResultDTO.RESOURCE_NAME + ":" + resourceName);
    }
    query.setFacet(true);
    query.addFacetPivotField(
            StatisticalResultDTO.MARKER_ACCESSION_ID + "," + StatisticalResultDTO.PROCEDURE_STABLE_ID);
    query.setFacetLimit(-1);
    query.setFacetMinCount(1);
    query.setRows(0);

    try {
        response = statisticalResultCore.query(query).getFacetPivot();
        for (PivotField genePivot : response.get(
                StatisticalResultDTO.MARKER_ACCESSION_ID + "," + StatisticalResultDTO.PROCEDURE_STABLE_ID)) {
            if (genePivot.getPivot() != null) {
                String geneName = genePivot.getValue().toString();
                Set<String> procedures = new HashSet<>();
                for (PivotField f : genePivot.getPivot()) {
                    procedures.add(f.getValue().toString());
                }
                res.put(geneName, procedures);
            }
        }
    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
    }
    return res;
}

From source file:org.mousephenotype.cda.solr.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);/*w  w  w.  java2  s  .co m*/
    query.addFacetField(StatisticalResultDTO.MARKER_ACCESSION_ID);
    query.setFacetLimit(10000000);
    query.setFacetMinCount(1);
    query.setRows(0);

    QueryResponse response;
    try {
        response = statisticalResultCore.query(query);
        for (Count id : response.getFacetField(StatisticalResultDTO.MARKER_ACCESSION_ID).getValues()) {
            res.add(id.getName());
        }
    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
    }
    return res;
}

From source file:org.mule.modules.SolrConnector.java

License:Apache License

private void applyFacetingLogic(SolrQuery query, List<String> facetFields, int facetLimit, int facetMinCount) {
    if (facetFields == null || facetFields.isEmpty()) {
        logger.debug("Faceting is disabled for this query...");
        return;//from   w  ww  .j a  va2s .  c  o  m
    }

    query.setFacet(true);
    query.setFacetLimit(facetLimit);
    query.setFacetMinCount(facetMinCount);
    query.addFacetField(facetFields.toArray(EMPTY_STRING_ARRAY));
}