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

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

Introduction

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

Prototype

public SolrQuery setFacet(boolean b) 

Source Link

Document

enable/disable faceting.

Usage

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

License:Apache License

/**
 *
 * @param geneAccessionId//from  w  w  w.ja  v  a  2s.  co  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

/**
 * @author tudose/*  ww  w.  j av a2 s .c om*/
 * @since 2015/07/21
 * @return List<ProcedureBean>
 */
public List<ImpressBaseDTO> getProcedures(String pipelineStableId, String observationType, String resource,
        Integer minParameterNumber, List<String> proceduresToSkip, String status, boolean includeWilcoxon) {

    List<ImpressBaseDTO> procedures = new ArrayList<>();

    try {
        SolrQuery query = new SolrQuery().setQuery("*:*").addField(StatisticalResultDTO.PROCEDURE_ID)
                .addField(StatisticalResultDTO.PROCEDURE_NAME)
                .addField(StatisticalResultDTO.PROCEDURE_STABLE_ID);
        query.set("group", true);
        query.set("group.field", StatisticalResultDTO.PROCEDURE_NAME);
        query.setRows(10000);
        query.setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc);
        query.set("group.limit", 1);
        if (!includeWilcoxon) {
            query.addFilterQuery("-" + StatisticalResultDTO.STATISTICAL_METHOD + ":Wilcoxon*");
        }
        if (pipelineStableId != null) {
            query.addFilterQuery(StatisticalResultDTO.PIPELINE_STABLE_ID + ":" + pipelineStableId);
        }
        if (observationType != null) {
            query.addFilterQuery(StatisticalResultDTO.DATA_TYPE + ":" + observationType);
        }
        if (resource != null) {
            query.addFilterQuery(StatisticalResultDTO.RESOURCE_NAME + ":" + resource);
        }
        if (status != null) {
            query.addFilterQuery(StatisticalResultDTO.STATUS + ":" + status);
        }
        String pivotField = StatisticalResultDTO.PROCEDURE_NAME + "," + StatisticalResultDTO.PARAMETER_NAME;

        if (minParameterNumber != null && minParameterNumber > 0) {

            query.setFacet(true);
            query.setFacetMinCount(1);
            query.set("facet.pivot.mincount", minParameterNumber);
            query.set("facet.pivot", pivotField);

        }

        QueryResponse response = statisticalResultCore.query(query);

        for (Group group : response.getGroupResponse().getValues().get(0).getValues()) {

            ImpressBaseDTO procedure = new ImpressBaseDTO(
                    Long.getLong(group.getResult().get(0).getFirstValue(StatisticalResultDTO.PROCEDURE_ID)
                            .toString()),
                    null,
                    group.getResult().get(0).getFirstValue(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString(),
                    group.getResult().get(0).getFirstValue(StatisticalResultDTO.PROCEDURE_NAME).toString());
            procedures.add(procedure);
        }

        if (minParameterNumber != null && minParameterNumber > 0) {
            // get procedureList with more than minParameterNumber
            // remove from procedures the ones not in procedureList
            List<Map<String, String>> res = getFacetPivotResults(response, false);
            HashSet<String> proceduresWithMinCount = new HashSet<>();

            for (Map<String, String> pivot : res) {
                proceduresWithMinCount.addAll(pivot.values());
            }

            List<ImpressBaseDTO> proceduresToReturn = new ArrayList<>();

            for (ImpressBaseDTO proc : procedures) {
                if (proceduresWithMinCount.contains(proc.getName())) {
                    if (proceduresToSkip != null && !proceduresToSkip.contains(proc.getStableId())
                            || proceduresToSkip == null) {
                        proceduresToReturn.add(proc);
                    }
                }
            }
            procedures = proceduresToReturn;

        }

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

    return procedures;
}

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 av  a2  s.c  o 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

public Map<String, List<String>> getDistributionOfLinesByMPTopLevel(List<String> resourceName,
        Float pValueThreshold)//from   w  w w . j a v  a 2s  .  c om
        throws SolrServerException, IOException, InterruptedException, ExecutionException {

    Map<String, List<String>> res = new ConcurrentHashMap<>(); //<parameter, <genes>>
    String pivotFacet = StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME + "," + StatisticalResultDTO.COLONY_ID;
    SolrQuery q = new SolrQuery();

    if (resourceName != null) {
        q.setQuery(StatisticalResultDTO.RESOURCE_NAME + ":"
                + StringUtils.join(resourceName, " OR " + StatisticalResultDTO.RESOURCE_NAME + ":"));
    } else {
        q.setQuery("*:*");
    }

    if (pValueThreshold != null) {
        q.setFilterQueries(StatisticalResultDTO.P_VALUE + ":[0 TO " + pValueThreshold + "]");
    }

    q.set("facet.pivot", pivotFacet);
    q.setFacet(true);
    q.setFacetMinCount(1);
    q.setRows(1);
    q.set("facet.limit", -1);

    logger.info("Solr url for getDistributionOfLinesByMPTopLevel " + SolrUtils.getBaseURL(statisticalResultCore)
            + "/select?" + q);
    QueryResponse response = statisticalResultCore.query(q);

    for (PivotField pivot : response.getFacetPivot().get(pivotFacet)) {
        if (pivot.getPivot() != null) {
            List<String> colonies = new ArrayList<>();
            for (PivotField colony : pivot.getPivot()) {
                colonies.add(colony.getValue().toString());
            }
            res.put(pivot.getValue().toString(), new ArrayList<String>(colonies));
        }
    }

    return res;
}

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

License:Apache License

public Map<String, List<String>> getDistributionOfGenesByMPTopLevel(List<String> resourceName,
        Float pValueThreshold)//  www . j  a v  a 2  s.c  o m
        throws SolrServerException, IOException, InterruptedException, ExecutionException {

    Map<String, List<String>> res = new ConcurrentHashMap<>(); //<parameter, <genes>>
    String pivotFacet = StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME + ","
            + StatisticalResultDTO.MARKER_ACCESSION_ID;
    SolrQuery q = new SolrQuery();

    if (resourceName != null) {
        q.setQuery(StatisticalResultDTO.RESOURCE_NAME + ":"
                + StringUtils.join(resourceName, " OR " + StatisticalResultDTO.RESOURCE_NAME + ":"));
    } else {
        q.setQuery("*:*");
    }

    if (pValueThreshold != null) {
        q.setFilterQueries(StatisticalResultDTO.P_VALUE + ":[0 TO " + pValueThreshold + "]");
    }

    q.set("facet.pivot", pivotFacet);
    q.setFacet(true);
    q.setRows(1);
    q.set("facet.limit", -1);

    logger.info("Solr url for getDistributionOfGenesByMPTopLevel " + SolrUtils.getBaseURL(statisticalResultCore)
            + "/select?" + q);
    QueryResponse response = statisticalResultCore.query(q);

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

    return res;
}

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//from www.ja va2 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 v a  2 s.c om*/
        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 PhenotypeFacetResult getPhenotypeFacetResultByPhenotypingCenterAndPipeline(String phenotypingCenter,
        String pipelineStableId) throws IOException, URISyntaxException, JSONException {

    SolrQuery query = new SolrQuery();
    query.setQuery(StatisticalResultDTO.PHENOTYPING_CENTER + ":\"" + phenotypingCenter);
    query.addFilterQuery(StatisticalResultDTO.PIPELINE_STABLE_ID + ":" + pipelineStableId);
    query.setFacet(true);
    query.addFacetField(StatisticalResultDTO.RESOURCE_FULLNAME);
    query.addFacetField(StatisticalResultDTO.PROCEDURE_NAME);
    query.addFacetField(StatisticalResultDTO.MARKER_SYMBOL);
    query.addFacetField(StatisticalResultDTO.MP_TERM_NAME);
    query.setSort(StatisticalResultDTO.P_VALUE, SolrQuery.ORDER.asc);
    query.setRows(10000000);//from   www.j  a  va2 s.co  m
    query.set("wt", "json");
    query.set("version", "2.2");

    String solrUrl = SolrUtils.getBaseURL(statisticalResultCore) + "/select?" + query;
    return createPhenotypeResultFromSolrResponse(solrUrl);
}

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);
    query.addFacetField(StatisticalResultDTO.MARKER_ACCESSION_ID);
    query.setFacetLimit(10000000);// ww  w. j a v a2 s. c om
    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.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 + "\"");
    }//from  w  w  w  .  j av a 2 s. co m
    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;
}