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

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

Introduction

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

Prototype

public ModifiableSolrParams add(String name, String... val) 

Source Link

Document

Add the given values to any existing name

Usage

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);
}