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

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

Introduction

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

Prototype

public SolrQuery setFields(String... fields) 

Source Link

Usage

From source file:org.dspace.app.cris.network.AVisualizationGraphModeThree.java

@Override
public List<VisualizationGraphNode> load(List<String[]> discardedNode, Integer importedNodes,
        Boolean otherError) throws Exception {
    // load all publications
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery(getQuery());/*from  www. j  av  a2 s .c  om*/

    solrQuery.setFields(getFields());
    solrQuery.addFilterQuery("search.resourcetype:" + getResourceType());

    int start = 0;
    int offset = 100;
    if (NOT_PAGINATION) {
        solrQuery.setRows(Integer.MAX_VALUE);
    } else {
        solrQuery.setStart(start);
        solrQuery.setRows(offset);
    }
    QueryResponse rsp = getService().getSearcher().search(solrQuery);
    SolrDocumentList publications = rsp.getResults();
    System.out.println(publications.getNumFound());
    List<VisualizationGraphNode> result = null;
    boolean endwhile = false;
    while (((publications.getNumFound() + offset) > start) && endwhile == false) {
        if (start > 0 && !NOT_PAGINATION) {
            solrQuery.setStart(start);
            solrQuery.setRows(offset);
            rsp = getService().getSearcher().search(solrQuery);
            publications = rsp.getResults();
        }

        start = (start + 1) + offset;
        // for each publication get authority's authors facets
        Iterator<SolrDocument> iter = publications.iterator();
        int counter = 0;
        external: while (iter.hasNext()) {

            counter++;
            log.debug("" + (start == 0 ? counter : (start + counter)) + " of " + publications.getNumFound());
            System.out.println(getConnectionName() + " - " + counter);

            result = new ArrayList<VisualizationGraphNode>();

            Integer pubId = null;
            try {
                SolrDocument publication = iter.next();

                pubId = (Integer) publication.getFieldValue("search.resourceid");

                Object obj = publication.getFieldValue(getNameFieldValueInFields());
                String handle = (String) publication.getFirstValue(getNameFieldExtraInFields());

                Object auth = publication.getFieldValue(getNameFieldNodeBuilderInFields());

                List<String> values = new ArrayList<String>();
                if (obj instanceof ArrayList) {
                    for (String aaa : (List<String>) obj) {
                        values.add(aaa);
                    }
                } else {
                    String value = (String) obj;
                    values.add(value);
                }

                if (auth instanceof ArrayList) {
                    int i = 0;
                    List<String> authArrays = (List<String>) auth;
                    for (String aaa : authArrays) {

                        String[] split = aaa.split("\\|\\|\\|");

                        String a = aaa;
                        String a_authority = null;
                        String a_dept = null;
                        String a_displayValue = "";

                        if (split.length > 1) {

                            String[] splitAuthority = split[1].split(splitterAuthority);

                            a_displayValue = splitAuthority[0];
                            if (split.length > 1) {
                                a_authority = splitAuthority[1];
                                // a_dept = ResearcherPageUtils
                                // .getDepartment(a_authority);
                                a_dept = getDepartmentFromSOLR(a_authority);
                            }

                        }
                        for (int j = i; j < authArrays.size(); j++) {
                            String bbb = authArrays.get(j);
                            String extra = handle;

                            split = bbb.split("\\|\\|\\|");

                            String b = bbb;
                            String b_authority = null;
                            String b_dept = null;
                            String b_displayValue = "";

                            if (split.length > 1) {

                                String[] splitAuthority = split[1].split(splitterAuthority);

                                b_displayValue = splitAuthority[0];
                                if (split.length > 1) {
                                    b_authority = splitAuthority[1];
                                    // a_dept = ResearcherPageUtils
                                    // .getDepartment(a_authority);
                                    b_dept = getDepartmentFromSOLR(a_authority);
                                }

                            }

                            if (j == i) {
                                buildRow(result, a, a_authority, a_displayValue, b, b_authority, b_displayValue,
                                        values, extra, a_dept, b_dept, ConstantNetwork.ENTITY_PLACEHOLDER_RP);
                            } else {
                                buildRow(result, a, a_authority, a_displayValue, b, b_authority, b_displayValue,
                                        values, extra, a_dept, b_dept, ConstantNetwork.ENTITY_RP);
                            }
                        }
                        i++;
                    }
                } else {
                    continue external;
                }

            } catch (Exception e) {
                log.error("Error try to build object to index with publication ID:" + pubId);
                log.error(e.getMessage(), e);
                otherError = true;
                continue;
            }

            importedNodes = indexNode(discardedNode, importedNodes, result);

        }
        if (NOT_PAGINATION) {
            endwhile = true;
        }

        log.debug("commit " + getType());
        getIndexer().commit();
    }
    return result;
}

From source file:org.dspace.app.cris.ws.WSServicesCRIS.java

public void internalBuildFieldList(SolrQuery solrQuery, String... projection) {
    solrQuery.setFields(projection);
    solrQuery.addField("search.resourceid");
    solrQuery.addField("search.resourcetype");
}

From source file:org.dspace.app.webui.cris.servlet.DeptMetricsNetworkServlet.java

@Override
protected void doDSGet(Context context, HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, SQLException {

    String dept = request.getParameter("dept");

    boolean found = false;

    if (dept == null) {
        response.sendError(HttpServletResponse.SC_NOT_FOUND, "A department name could be passed as parameter");
    } else {/* w  w  w .j  av  a 2  s  . c  om*/
        found = true;
    }

    // load all publications
    SolrQuery solrQuery = new SolrQuery();

    List<DTOMetric> results = new ArrayList<DTOMetric>();

    String connection = ConfigurationManager.getProperty(NetworkPlugin.CFG_MODULE, "network.connection");

    String[] connections = connection.split(",");
    List<String> fieldsToRetrieve = new ArrayList<String>();
    fieldsToRetrieve.add("search.resourceid");
    fieldsToRetrieve.add("rp_fullname");
    for (String conn : connections) {
        fieldsToRetrieve.add(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_1_RETRIEVE + conn);
        fieldsToRetrieve.add(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_2_RETRIEVE + conn);
        fieldsToRetrieve.add(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_3_RETRIEVE + conn);
        fieldsToRetrieve.add(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_4_RETRIEVE + conn);
    }
    String[] fields = fieldsToRetrieve.toArray(new String[] {});
    QueryResponse rsp;
    try {
        solrQuery = new SolrQuery();
        solrQuery.setQuery("search.resourcetype:" + CrisConstants.RP_TYPE_ID + " AND rp_dept:\"" + dept + "\"");
        solrQuery.setFields(fields);
        solrQuery.setRows(Integer.MAX_VALUE);
        rsp = getService().getSearcher().search(solrQuery);

        SolrDocumentList rows = rsp.getResults();

        external: for (String conn : connections) {
            Iterator<SolrDocument> iter = rows.iterator();
            internal: while (iter.hasNext()) {
                DTOMetric metric = new DTOMetric();

                SolrDocument publication = iter.next();

                Integer rp_id = (Integer) publication.getFirstValue("search.resourceid");
                String rp_fullname = (String) publication.getFirstValue("rp_fullname");
                String averageStrength = (String) publication
                        .getFirstValue(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_3_RETRIEVE + conn);
                String maxStrength = (String) publication
                        .getFirstValue(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_2_RETRIEVE + conn);
                String numbersConnections = (String) publication
                        .getFirstValue(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_1_RETRIEVE + conn);
                String quadraticVariance = (String) publication
                        .getFirstValue(ConstantNetwork.PREFIX_METADATA_BIBLIOMETRIC_4_RETRIEVE + conn);

                metric.setAuthority(ResearcherPageUtils.getPersistentIdentifier(rp_id, ResearcherPage.class));
                metric.setFullName(rp_fullname);
                metric.setType(conn);
                metric.setAverageStrength(averageStrength);
                metric.setMaxStrength(maxStrength);
                metric.setNumbersConnections(numbersConnections);
                metric.setQuadraticVariance(quadraticVariance);

                if ((averageStrength == null || averageStrength.isEmpty())
                        && (maxStrength == null || maxStrength.isEmpty())
                        && (numbersConnections == null || numbersConnections.isEmpty())
                        && (quadraticVariance == null || quadraticVariance.isEmpty())) {
                    //do not show anythings
                } else {
                    results.add(metric);
                }

            }
        }
    } catch (SearchServiceException e) {
        log.error(e.getMessage(), new ServletException(e));
    }

    request.setAttribute("dept", dept);
    request.setAttribute("metrics", results);

    JSPManager.showJSP(request, response, "/graph/dmetrics.jsp");

}

From source file:org.dspace.app.xmlui.aspect.discovery.BrowseFacet.java

License:Open Source License

/**
 * Retrieves the lowest date value in the given field
 * @param query a solr query//  www .j  av  a 2  s.co m
 * @param dateField the field for which we want to retrieve our date
 * @param filterquery the filterqueries
 * @return the lowest date found, in a date object
 */
private Date getLowestDateValue(String query, String dateField, String... filterquery) {

    try {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery(query);
        solrQuery.setFields(dateField);
        solrQuery.setRows(1);
        solrQuery.setSortField(dateField, SolrQuery.ORDER.asc);
        solrQuery.setFilterQueries(filterquery);

        QueryResponse rsp = searchService.search(solrQuery);
        if (0 < rsp.getResults().getNumFound()) {
            return (Date) rsp.getResults().get(0).getFieldValue(dateField);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

From source file:org.geotools.data.solr.SolrDataStore.java

License:Open Source License

/**
 * Builds the SolrJ count query with support of limit/offset, OGC filter encoding and viewParams <br>
 * Currently only additional "q" and "fq" SOLR parameters can be passed using viewParams, this
 * conditions are added in AND with others
 * // www .  j  av a 2 s .  c o m
 * @param featureType the feature type to query
 * @param q the OGC query to translate in SOLR request
 * 
 * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS}
 * 
 */
protected SolrQuery count(SimpleFeatureType featureType, Query q) {
    SolrQuery query = new SolrQuery();
    query.setParam("omitHeader", true);
    query.setQuery("*:*");
    query.setFields(this.getPrimaryKey(featureType.getName().getLocalPart()).getName());
    try {

        // Encode limit/offset, if necessary

        if (q.getStartIndex() != null && q.getStartIndex() >= 0) {
            query.setStart(q.getStartIndex());
        }
        query.setRows(0);

        // Encode OGC filer
        FilterToSolr f2s = initializeFilterToSolr(featureType);
        String fq = this.field + ":" + featureType.getTypeName();
        String ffq = f2s.encodeToString(q.getFilter());
        if (ffq != null && !ffq.isEmpty()) {
            fq = fq + " AND " + ffq;
        }
        query.setFilterQueries(fq);

        // Add viewparams parameters
        addViewparams(q, query);

    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, e.getMessage(), e);
    }
    return query;
}

From source file:org.kuali.ole.docstore.engine.service.rest.DocstoreRestClient_UT.java

License:Open Source License

public void searchBibWithFacets(String facetSort) throws Exception {
    String[] facets = { "Author_facet", "Format_facet", "Genre_facet", "Language_facet",
            "PublicationDate_facet", "PublicationDate_sort" };
    String[] fieldList = { "LocalId_display", "Title_sort", "Title_display", "JournalTitle_display",
            "Author_display", "Publisher_display", "ISBN_display", "ISSN_display", "Subject_display",
            "Publisher_display", "PublicationDate_display", "Edition_display", "Format_display",
            "Language_display", "Description_display", "FormGenre_display", "DocFormat", "staffOnlyFlag",
            "bibIdentifier", "holdingsIdentifier" };
    String args = "(DocType:bibliographic)AND((*:*))";
    SolrServer solr = SolrServerManager.getInstance().getSolrServer();
    SolrQuery query = new SolrQuery();
    query.setQuery(args);/*from   w  ww  . j a  v  a  2  s.  c  om*/
    query.setFacet(true);
    query.addFacetField(facets);
    query.setFacetMinCount(1);
    query.setFacetSort(facetSort);
    query.setFacetLimit(5);
    query.setFields(fieldList);
    query.set("facet.offset", "0");
    QueryResponse response = solr.query(query);
    System.out.println("Search result count " + response.getResults().getNumFound()
            + " and  time taken to search is " + response.getQTime());
}

From source file:org.mousephenotype.cda.indexers.AlleleIndexer.java

License:Apache License

private void populateDiseaseLookup() throws SolrServerException, IOException {

    int docsRetrieved = 0;
    int numDocs = getDiseaseDocCount();

    // Fields in the solr core to bring back
    String fields = StringUtils.join(Arrays.asList(DiseaseBean.DISEASE_ID, DiseaseBean.MGI_ACCESSION_ID,
            DiseaseBean.DISEASE_SOURCE, DiseaseBean.DISEASE_TERM, DiseaseBean.DISEASE_ALTS,
            DiseaseBean.DISEASE_CLASSES, DiseaseBean.HUMAN_CURATED, DiseaseBean.MOUSE_CURATED,
            DiseaseBean.MGI_PREDICTED, DiseaseBean.IMPC_PREDICTED, DiseaseBean.MGI_PREDICTED_KNOWN_GENE,
            DiseaseBean.IMPC_PREDICTED_KNOWN_GENE, DiseaseBean.MGI_NOVEL_PREDICTED_IN_LOCUS,
            DiseaseBean.IMPC_NOVEL_PREDICTED_IN_LOCUS), ",");

    // The solrcloud instance cannot give us all results back at once,
    // we must batch up the calls and build it up piece at a time
    while (docsRetrieved < numDocs + PHENODIGM_BATCH_SIZE) {

        SolrQuery query = new SolrQuery("*:*");
        query.addFilterQuery("type:disease_gene_summary");
        query.setFields(fields);
        query.setStart(docsRetrieved);/*from   w w  w . ja  v  a2  s  . c  o m*/
        query.setRows(PHENODIGM_BATCH_SIZE);
        query.setSort(DiseaseBean.DISEASE_ID, SolrQuery.ORDER.asc);

        QueryResponse response = phenodigmCore.query(query);
        if (response == null) {
            throw new SolrServerException(
                    "Response from phendigm core is null. Chcek phenodigm core is up with query: " + query);
        }
        List<DiseaseBean> diseases = response.getBeans(DiseaseBean.class);
        for (DiseaseBean disease : diseases) {
            if (!diseaseBeanByMgiGeneAccessionId.containsKey(disease.getMgiAccessionId())) {
                diseaseBeanByMgiGeneAccessionId.put(disease.getMgiAccessionId(), new ArrayList<DiseaseBean>());
            }
            diseaseBeanByMgiGeneAccessionId.get(disease.getMgiAccessionId()).add(disease);
        }

        docsRetrieved += PHENODIGM_BATCH_SIZE;
    }
}

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

License:Apache License

private SolrDocumentList runQuery(String query, int start, int length) throws SolrServerException, IOException {

    SolrQuery solrQuery = new SolrQuery();

    log.debug("solr query=" + query);
    solrQuery.setQuery(query);//from  w w  w  .  j a v a2 s  . co m
    solrQuery.setStart(start);
    solrQuery.setRows(length);
    solrQuery.setFields("id");

    QueryResponse rsp = null;
    rsp = sangerImagesCore.query(solrQuery);

    return rsp.getResults();
}

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

License:Apache License

/**
 *
 * @param mgiAccession//from   w  w w  .  j a  va2s. c o m
 *            if mgi accesion null assume a request for control data
 * @param fields
 * @return
 * @throws SolrServerException, IOException
 */
public QueryResponse getExpressionTableDataImages(String mgiAccession, boolean embryo, String... fields)
        throws SolrServerException, IOException {
    // e.g.
    // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/impc_images/select?q=gene_accession_id:%22MGI:106209%22&facet=true&facet.field=ma_term&facet.mincount=1&fq=(parameter_name:%22LacZ%20Images%20Section%22%20OR%20parameter_name:%22LacZ%20Images%20Wholemount%22)
    SolrQuery solrQuery = new SolrQuery();
    if (mgiAccession != null) {
        solrQuery.setQuery(ImageDTO.GENE_ACCESSION_ID + ":\"" + mgiAccession + "\"");
    } else {
        // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/impc_images/select?q=biological_sample_group:control&facet=true&facet.field=ma_term&facet.mincount=1&fq=(parameter_name:%22LacZ%20Images%20Section%22%20OR%20parameter_name:%22LacZ%20Images%20Wholemount%22)&rows=100000
        solrQuery.setQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":\"" + "control" + "\"");
    }
    if (embryo) {
        solrQuery.addFilterQuery(ImageDTO.PARAMETER_NAME + ":\"LacZ images Section\" OR "
                + ImageDTO.PARAMETER_NAME + ":\"LacZ images wholemount\"");
    } else {
        solrQuery.addFilterQuery(ImageDTO.PARAMETER_NAME + ":\"LacZ Images Section\" OR "
                + ImageDTO.PARAMETER_NAME + ":\"LacZ Images Wholemount\"");
    }

    solrQuery.setFields(fields);
    solrQuery.setRows(100000);
    solrQuery.setSort(ObservationDTO.ID, SolrQuery.ORDER.asc);

    QueryResponse response = impcImagesCore.query(solrQuery);
    return response;
}

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

License:Apache License

/**
 *
 * @param mgiAccession/*from   w  w w  . j  a v a  2  s .  co m*/
 *            if mgi accesion null assume a request for control data
 * @param fields
 * @return
 * @throws SolrServerException, IOException
 */
private QueryResponse getCategoricalAdultLacZData(String mgiAccession, boolean embryo, String... fields)
        throws SolrServerException, IOException {
    // e.g.
    // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/experiment/select?q=gene_accession_id:%22MGI:1351668%22&facet=true&facet.field=parameter_name&facet.mincount=1&fq=(procedure_name:%22Adult%20LacZ%22)&rows=10000
    SolrQuery solrQuery = new SolrQuery();
    if (mgiAccession != null) {
        solrQuery.setQuery(ImageDTO.GENE_ACCESSION_ID + ":\"" + mgiAccession + "\"");
    } else {
        // http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/impc_images/select?q=biological_sample_group:control&facet=true&facet.field=ma_term&facet.mincount=1&fq=(parameter_name:%22LacZ%20Images%20Section%22%20OR%20parameter_name:%22LacZ%20Images%20Wholemount%22)&rows=100000
        solrQuery.setQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":\"" + "control" + "\"");
    }
    if (embryo) {
        solrQuery.addFilterQuery(ImageDTO.PROCEDURE_NAME + ":\"Embryo LacZ\"");
        solrQuery.addFilterQuery("-" + ImageDTO.PARAMETER_NAME + ":\"LacZ images section\"");
        solrQuery.addFilterQuery("-" + ImageDTO.PARAMETER_NAME + ":\"LacZ images wholemount\"");
        solrQuery.addFilterQuery(ObservationDTO.OBSERVATION_TYPE + ":\"categorical\"");
    } else {
        solrQuery.addFilterQuery(ImageDTO.PROCEDURE_NAME + ":\"Adult LacZ\"");
        solrQuery.addFilterQuery("-" + ImageDTO.PARAMETER_NAME + ":\"LacZ Images Section\"");
        solrQuery.addFilterQuery("-" + ImageDTO.PARAMETER_NAME + ":\"LacZ Images Wholemount\"");
        solrQuery.addFilterQuery(ObservationDTO.OBSERVATION_TYPE + ":\"categorical\"");
    }

    solrQuery.addSort(ImageDTO.ID, SolrQuery.ORDER.asc);
    solrQuery.setFields(fields);
    solrQuery.setRows(Integer.MAX_VALUE);
    solrQuery.setSort(ObservationDTO.ID, SolrQuery.ORDER.asc);

    QueryResponse response = experimentCore.query(solrQuery);
    return response;
}