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

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

Introduction

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

Prototype

public SolrQuery addField(String field) 

Source Link

Usage

From source file:org.intermine.api.searchengine.solr.SolrKeywordSearchHandler.java

License:GNU General Public License

private QueryResponse performSearch(InterMineAPI im, String queryString, Map<String, String> facetValues,
        List<Integer> ids, int offSet, int rowSize) {

    SolrClient solrClient = SolrClientManager.getClientInstance(im.getObjectStore());

    QueryResponse resp = null;//  w  ww . j av  a 2 s. co m

    KeywordSearchPropertiesManager keywordSearchPropertiesManager = KeywordSearchPropertiesManager
            .getInstance(im.getObjectStore());

    Vector<KeywordSearchFacetData> facets = keywordSearchPropertiesManager.getFacets();

    Map<ClassDescriptor, Float> classBoost = keywordSearchPropertiesManager.getClassBoost();

    List<String> fieldNames = getFieldNamesFromSolrSchema(solrClient);

    try {

        SolrQuery newQuery = new SolrQuery();
        newQuery.setQuery(queryString);
        newQuery.setStart(offSet);
        newQuery.setRows(rowSize);
        newQuery.addField("score");
        newQuery.addField("id");
        newQuery.add("defType", "edismax");

        for (KeywordSearchFacetData keywordSearchFacetData : facets) {
            newQuery.addFacetField("facet_" + keywordSearchFacetData.getField());
        }

        // add faceting selections
        for (Map.Entry<String, String> facetValue : facetValues.entrySet()) {
            if (facetValue != null) {
                newQuery.addFilterQuery(facetValue.getKey() + ":" + facetValue.getValue());
            }
        }

        //limiting the query based on search bag
        if (ids != null && !ids.isEmpty()) {
            for (int id : ids) {
                newQuery.addFilterQuery("id", Integer.toString(id));
            }
        }

        String boostQuery = "";

        for (Map.Entry<ClassDescriptor, Float> boostValue : classBoost.entrySet()) {
            if (boostValue != null) {
                boostQuery += "classname:" + boostValue.getKey().getUnqualifiedName() + "^"
                        + boostValue.getValue() + " ";
            }
        }

        LOG.info("BoostQuery : " + boostQuery);

        String fieldListQuery = "";

        for (String field : fieldNames) {
            fieldListQuery = fieldListQuery + field;
            if (field.endsWith("_raw")) {
                fieldListQuery = fieldListQuery + "^2.0";
            }
            fieldListQuery = fieldListQuery + " ";
        }

        LOG.info("Field List Query : " + fieldListQuery);

        newQuery.add("bq", boostQuery);
        newQuery.add("qf", fieldListQuery);

        resp = solrClient.query(newQuery, SolrRequest.METHOD.POST);

        return resp;

    } catch (SolrServerException e) {
        LOG.error("Query performed on solr failed for search term : " + queryString, e);
        e.printStackTrace();

    } catch (IOException e) {
        LOG.error("Query performed on solr failed for search term : " + queryString, e);
        e.printStackTrace();

    }

    return resp;
}

From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java

License:Apache License

/**
 * @since 2016/02/25//from   w w w. ja v a  2  s.c o m
 * @author ilinca
 * @return
 * @throws SolrServerException, IOException
 */
public SolrDocumentList getImagesForLacZ() throws SolrServerException, IOException {

    SolrQuery query = new SolrQuery();
    query.setQuery("procedure_name:*LacZ*");
    query.addFilterQuery("ma_id:*");
    query.addFilterQuery("accession:*");
    query.addField("ma_id");
    query.addField("accession");
    query.setRows(Integer.MAX_VALUE);
    return sangerImagesCore.query(query).getResults();
}

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

License:Apache License

public String getSearchTermJson(String anatomyTermId) throws SolrServerException, IOException {

    SolrQuery solrQuery = new SolrQuery().setQuery(AnatomyDTO.ANATOMY_ID + ":\"" + anatomyTermId + "\"")
            .setRows(1);/*ww w .  j  a  va 2s.c o  m*/
    solrQuery.addField(AnatomyDTO.SEARCH_TERM_JSON);

    QueryResponse rsp = anatomyCore.query(solrQuery);

    List<AnatomyDTO> mas = rsp.getBeans(AnatomyDTO.class);

    return (mas != null) ? mas.get(0).getSearchTermJson() : "";
}

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

License:Apache License

public String getChildrenJson(String nodeId, String termId) throws SolrServerException, IOException {

    // Node_id is unique in ontodb for each ontology.
    // But we are mixing ontologies here so need to use a combination of node_id and anotomy_id prefix for uniqueness
    String qStr = null;//from ww w .j  a va  2  s. co m
    if (termId.startsWith("MA:")) {
        qStr = "MA*";
    } else if (termId.startsWith("EMAPA:")) {
        qStr = "EMAPA*";
    }
    SolrQuery solrQuery = new SolrQuery()
            .setQuery(AnatomyDTO.ANATOMY_NODE_ID + ":" + nodeId + " AND " + AnatomyDTO.ANATOMY_ID + ":" + qStr)
            .setRows(1);
    solrQuery.addField(AnatomyDTO.CHILDREN_JSON);
    QueryResponse rsp = anatomyCore.query(solrQuery);
    List<AnatomyDTO> mas = rsp.getBeans(AnatomyDTO.class);

    return (mas != null) ? mas.get(0).getChildrenJson() : "";
}

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

License:Apache License

/**
 *
 * @return list of image DTOs with laczData. Selected fields only.
 * @throws SolrServerException, IOException
 *///from www.  j a va 2  s.  c  o  m
public List<ImageDTO> getImagesForLacZ() throws SolrServerException, IOException {

    SolrQuery query = new SolrQuery();
    query.setQuery(ImageDTO.PROCEDURE_NAME + ":*LacZ*");
    query.setFilterQueries(ImageDTO.ANATOMY_ID + ":*");
    query.addFilterQuery(ImageDTO.GENE_ACCESSION_ID + ":*");
    query.setRows(1000000);
    query.addField(ImageDTO.GENE_SYMBOL);
    query.addField(ImageDTO.GENE_ACCESSION_ID);
    query.addField(ImageDTO.ANATOMY_ID);
    query.addField(ImageDTO.ANATOMY_TERM);

    return impcImagesCore.query(query).getBeans(ImageDTO.class);
}

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

License:Apache License

public List<String[]> getLaczExpressionSpreadsheet(String imageCollectionLinkBase) {
    SolrQuery query = new SolrQuery();
    ArrayList<String[]> res = new ArrayList<>();
    String[] aux = new String[0];

    query.setQuery(ImageDTO.PROCEDURE_NAME + ":\"Adult LacZ\" AND " + ImageDTO.BIOLOGICAL_SAMPLE_GROUP
            + ":experimental");
    query.setRows(1000000);/*from  w  ww . ja  v a  2 s. c  o m*/
    query.addField(ImageDTO.GENE_SYMBOL);
    query.addField(ImageDTO.GENE_ACCESSION_ID);
    query.addField(ImageDTO.ALLELE_SYMBOL);
    query.addField(ImageDTO.COLONY_ID);
    query.addField(ImageDTO.BIOLOGICAL_SAMPLE_ID);
    query.addField(ImageDTO.ZYGOSITY);
    query.addField(ImageDTO.SEX);
    query.addField(ImageDTO.PARAMETER_ASSOCIATION_NAME);
    query.addField(ImageDTO.PARAMETER_STABLE_ID);
    query.addField(ImageDTO.PARAMETER_ASSOCIATION_VALUE);
    query.addField(ImageDTO.GENE_ACCESSION_ID);
    query.addField(ImageDTO.PHENOTYPING_CENTER);
    query.setFacet(true);
    query.setFacetLimit(100);
    query.addFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME);
    query.set("group", true);
    query.set("group.limit", 100000);
    query.set("group.field", ImageDTO.BIOLOGICAL_SAMPLE_ID);

    try {
        QueryResponse solrResult = impcImagesCore.query(query);
        ArrayList<String> allParameters = new ArrayList<>();
        List<String> header = new ArrayList<>();
        header.add("Gene Symbol");
        header.add("MGI Gene Id");
        header.add("Allele Symbol");
        header.add("Colony Id");
        header.add("Biological Sample Id");
        header.add("Zygosity");
        header.add("Sex");
        header.add("Phenotyping Centre");

        logger.info(SolrUtils.getBaseURL(impcImagesCore) + "/select?" + query);

        // Get facets as we need to turn them into columns
        for (Count facet : solrResult.getFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME).getValues()) {
            allParameters.add(facet.getName());
            header.add(facet.getName());
        }
        header.add("image_collection_link");
        res.add(header.toArray(aux));
        for (Group group : solrResult.getGroupResponse().getValues().get(0).getValues()) {

            List<String> row = new ArrayList<>();
            ArrayList<String> params = new ArrayList<>();
            ArrayList<String> paramValues = new ArrayList<>();
            String urlToImagePicker = imageCollectionLinkBase + "/imageComparator?acc=";

            for (SolrDocument doc : group.getResult()) {
                if (row.size() == 0) {
                    row.add(doc.getFieldValues(ImageDTO.GENE_SYMBOL).iterator().next().toString());
                    row.add(doc.getFieldValues(ImageDTO.GENE_ACCESSION_ID).iterator().next().toString());
                    urlToImagePicker += doc.getFieldValue(ImageDTO.GENE_ACCESSION_ID) + "&parameter_stable_id=";
                    urlToImagePicker += doc.getFieldValue(ImageDTO.PARAMETER_STABLE_ID);
                    if (doc.getFieldValue(ImageDTO.ALLELE_SYMBOL) != null) {
                        row.add(doc.getFieldValue(ImageDTO.ALLELE_SYMBOL).toString());
                    }
                    row.add(doc.getFieldValue(ImageDTO.COLONY_ID).toString());
                    row.add(doc.getFieldValue(ImageDTO.BIOLOGICAL_SAMPLE_ID).toString());
                    if (doc.getFieldValue(ImageDTO.ZYGOSITY) != null) {
                        row.add(doc.getFieldValue(ImageDTO.ZYGOSITY).toString());
                    }
                    row.add(doc.getFieldValue(ImageDTO.SEX).toString());
                    row.add(doc.getFieldValue(ImageDTO.PHENOTYPING_CENTER).toString());
                }

                if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME) != null) {
                    for (int i = 0; i < doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME).size(); i++) {
                        params.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME)
                                .toArray(new Object[0])[i].toString());

                        if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE) != null) {
                            paramValues.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE)
                                    .toArray(new Object[0])[i].toString());
                        } else {
                            paramValues.add(Constants.NO_INFORMATION_AVAILABLE);
                        }
                    }
                }
            }

            for (String tissue : allParameters) {
                if (params.contains(tissue)) {
                    row.add(paramValues.get(params.indexOf(tissue)));
                } else {
                    row.add("");
                }
            }
            row.add(urlToImagePicker);
            res.add(row.toArray(aux));
        }

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

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

License:Apache License

public List<MpDTO> getAllMpWithMaMapping() throws SolrServerException, IOException {

    SolrQuery q = new SolrQuery();
    q.setRows(Integer.MAX_VALUE);
    q.setQuery(MpDTO.INFERRED_MA_ID + ":*");

    q.addField(MpDTO.MP_ID);
    q.addField(MpDTO.INFERRED_MA_ID);/*w  ww .j av  a2  s . co m*/

    return mpCore.query(q).getBeans(MpDTO.class);
}

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

License:Apache License

/**
 * @author ilinca//from w  w w .j  a  v a2 s.  c o m
 * @since 2016/04/05
 * @param mpTermId
 * @return JSON in jstree format for ontology browser
 * @throws SolrServerException, IOException
 */
public String getSearchTermJson(String mpTermId) throws SolrServerException, IOException {

    SolrQuery solrQuery = new SolrQuery().setQuery(MpDTO.MP_ID + ":\"" + mpTermId + "\"").setRows(1);
    solrQuery.addField(MpDTO.SEARCH_TERM_JSON);

    QueryResponse rsp = mpCore.query(solrQuery);
    List<MpDTO> mps = rsp.getBeans(MpDTO.class);

    return (mps != null) ? mps.get(0).getSearchTermJson() : "";
}

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

License:Apache License

/**
 * @author ilinca/*from w w  w.  ja  v a  2s  .  co  m*/
 * @since 2016/04/05
 * @return JSON in jstree format for ontology browser
 * @throws SolrServerException, IOException
 */
public String getChildrenJson(String nodeId, String termId) throws SolrServerException, IOException {

    SolrQuery solrQuery = new SolrQuery().setQuery(MpDTO.MP_NODE_ID + ":" + nodeId).setRows(1);
    solrQuery.addField(MpDTO.CHILDREN_JSON);

    QueryResponse rsp = mpCore.query(solrQuery);
    List<MpDTO> mps = rsp.getBeans(MpDTO.class);

    return (mps != null) ? mps.get(0).getChildrenJson() : "";
}

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

License:Apache License

public Set<String> getViabilityForGene(String acc) throws SolrServerException, IOException {

    SolrQuery query = new SolrQuery();
    query.setQuery(ObservationDTO.PARAMETER_STABLE_ID + ":IMPC_VIA_001_001");
    query.setFilterQueries(ObservationDTO.GENE_ACCESSION_ID + ":\"" + acc + "\"");
    query.addField(ObservationDTO.GENE_SYMBOL);
    query.addField(ObservationDTO.GENE_ACCESSION_ID);
    query.addField(ObservationDTO.CATEGORY);
    query.setSort(ObservationDTO.ID, SolrQuery.ORDER.asc);
    query.setRows(100000);/*ww  w.  j a  v  a2s. c  om*/

    logger.info("getViabilityForGene Url" + SolrUtils.getBaseURL(experimentCore) + "/select?" + query);

    HashSet<String> viabilityCategories = new HashSet<>();

    for (SolrDocument doc : experimentCore.query(query).getResults()) {
        viabilityCategories.add(doc.getFieldValue(ObservationDTO.CATEGORY).toString());
    }

    return viabilityCategories;
}