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

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

Introduction

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

Prototype

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

Source Link

Document

Replace any existing parameter with the given name.

Usage

From source file:se.uu.ub.cora.solrsearch.SolrRecordSearch.java

License:Open Source License

private void createQueryForFinal(SolrQuery solrQuery, DataAtomic childElementFromSearchAsAtomic,
        String indexFieldName) {//from   ww  w. ja  va2s  .co m
    String searchStringWithParenthesis = getSearchStringFromChildAndSurroundWithParenthesis(
            childElementFromSearchAsAtomic);
    String queryString = indexFieldName + ":" + searchStringWithParenthesis;
    solrQuery.set("q", queryString);
}

From source file:sk.opendata.odn.ui.panel.ResultPanel.java

License:Open Source License

/**
 * Update the search results display with items obtained using given query.
 * /*from   w  w  w. ja v a  2s.  co m*/
 * See http://wiki.apache.org/solr/ExtendedDisMax .
 * 
 * @param query SOLR ExtendedDisMax (i.e. user friendly) query
 * @throws IOException when creation of SOLR back-end fails
 * @throws SolrServerException when SOLR query fails
 */
public void doSearch(final String query) throws IOException, SolrServerException {
    if (query.isEmpty())
        // nothing to do with empty search query
        return;

    SolrRepository solrRepository = SolrRepository.getInstance();

    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery(query);
    solrQuery.set("defType", "edismax");

    // prepare the SOLR query
    // we're trying to identify some "basic" query types and perform tuning those special cases
    if (query.matches("[0-9]{8}")) {
        // ICO
        solrQuery.set("qf", "ico^2 " + "donor_ico " + "customer_ico " + "supplier_ico");
    } else if (PscUtil.isPsc(query)) {
        // PCS
        solrQuery.set("qf", "donor_psc^2 " + "seat " + // TODO: this is "text_general' in SOLR schema and here PSC might still be in a form "058 01" thus searching for "05801" wont match it
                "donor_address" // TODO: -"-
        );
        // re-set query to normalized PSC
        solrQuery.setQuery(PscUtil.normalize(query));
    } else {
        // default
        solrQuery.set("qf", "name^3 " + "legal_form^0.5 " + "seat " + "ico^2 " + "date_from " + "date_to "
                + "donor_name^2 " + "donor_surname^2 " + "donor_company^2 " + "donor_ico " + "currency^0.5 "
                + "donor_address " + "donor_psc " + "donor_city " + "recipient_party^0.75 " + "year "
                + "accept_date " + "note^0.5 " + "procurement_subject " + "customer_ico " + "supplier_ico");
    }

    // TODO: paging - for now we just limit the search result list
    int page = 0;
    solrQuery.setStart(page * RESULTS_PER_PAGE);
    solrQuery.setRows(RESULTS_PER_PAGE);

    logger.debug("XXX SOLR query: " + solrQuery.toString());

    // obtain results
    QueryResponse queryResponse = solrRepository.getSolrServer().query(solrQuery);
    List<SolrItem> responseItems = queryResponse.getBeans(SolrItem.class);

    // update the display
    resultList.addAll(responseItems);
}

From source file:sk.opendatanode.utils.SolrQueryHelper.java

License:Open Source License

public static QueryResponse search(PageParameters parameters) throws SolrServerException, IOException {
    final String q = parameters.get("q").toString("").trim();

    SolrQuery solrQuery = new SolrQuery();

    if (q.isEmpty()) {
        // chceme mat prazdny result, posielame kvoli facet informaciam
        solrQuery.setQuery("*:*");
        if (parameters.getNamedKeys().size() > 0) {
            solrQuery.setRows(SolrServerRep.MAX_RESULT_ROWS);
        } else {//  w  ww .j  a  v  a 2  s.  c om
            solrQuery.setRows(0);
        }
    } else {
        solrQuery.setQuery(q);
        solrQuery.setRows(SolrServerRep.MAX_RESULT_ROWS);
    }
    solrQuery.set("defType", "edismax");
    setQueryFields(solrQuery);

    // pridame filtre z parametrov pre stranku do parametrov pre solr query
    addFilters(solrQuery, parameters);

    SolrQueryHelper.addFacetParameters(solrQuery, parameters);

    // odoslanie
    return SolrServerRep.getInstance().sendQuery(solrQuery);
}

From source file:sk.opendatanode.utils.SolrQueryHelper.java

License:Open Source License

private static void setQueryFields(SolrQuery solrQuery) {
    solrQuery.set("qf",
            "name^3 " + "legal_form^0.5 " + "seat " + "ico^2 " + "date_from " + "date_to " + "donor_name^2 "
                    + "donor_surname^2 " + "donor_company^2 " + "donor_ico " + "currency^0.5 "
                    + "donor_address " + "donor_psc " + "donor_city " + "recipient_party^0.75 " + "year "
                    + "accept_date " + "note^0.5 " + "procurement_subject " + "customer_ico " + "supplier_ico");
}

From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.IntactSolrSearcher.java

License:Apache License

public Multimap<String, InteractorIdCount> searchInteractors(SolrQuery originalQuery,
        IntactFacetField[] intactFacetFields) throws IntactSolrException {
    SolrQuery query = originalQuery.getCopy();
    query.setRows(0);/*w w  w .j a  v  a  2 s  .c  o  m*/

    // we allow faceting
    query.setFacet(true);

    // we want all the facet fields with min count = 1. The facet fields with count = 0 are not interesting
    query.setFacetMinCount(1);

    Multimap<String, InteractorIdCount> interactors = HashMultimap.create();

    if (intactFacetFields != null) {

        // we sort the results : the biggest count first
        query.setFacetSort(FacetParams.FACET_SORT_COUNT);

        for (IntactFacetField facetField : intactFacetFields) {
            final String fieldName = createFieldName(facetField.getFieldName());

            // important optimization. We don't want to return all the fields, only a certain number for pagination
            if (facetField.getFirst() != null) {
                query.set("f." + fieldName + ".facet.offset", facetField.getFirst());
            }
            if (facetField.getMax() != null) {
                query.set("f." + fieldName + ".facet.limit", facetField.getMax());
            }

            query.addFacetField(fieldName);
        }
    }

    QueryResponse queryResponse = executeQuery(query);

    List<FacetField> facetFields = queryResponse.getFacetFields();

    if (facetFields == null || facetFields.isEmpty()) {
        return interactors;
    }

    for (FacetField ff : facetFields) {
        if (ff != null && ff.getValues() != null) {
            for (FacetField.Count c : ff.getValues()) {
                interactors.put(extractInteractorTypeFromFieldName(ff.getName()),
                        new InteractorIdCount(c.getName(), c.getCount()));
            }
        }
    }

    return interactors;
}

From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.IntactSolrSearcher.java

License:Apache License

public Map<String, Integer> countAllInteractors(SolrQuery originalQuery, String[] interactorTypeMis)
        throws IntactSolrException {
    boolean endOfFacetResults = false;

    int firstResults = 0;

    Map<String, Integer> results = new HashMap<String, Integer>();

    while (!endOfFacetResults) {
        int chunkResults = 0;

        SolrQuery query = originalQuery.getCopy();
        query.setRows(0);//from   www.  j  a v a  2  s. co  m

        // we allow faceting
        query.setFacet(true);

        // we want all the facet fields with min count = 1. The facet fields with count = 0 are not interesting
        query.setFacetMinCount(1);

        // important optimization. We don't want to return all the fields, only a certain number for pagination
        query.set(FacetParams.FACET_OFFSET, firstResults);
        query.setFacetLimit(CHUNK_FACET_THRESHOLD);

        // we sort the results : the biggest count first
        query.setFacetSort(FacetParams.FACET_SORT_COUNT);

        for (String mi : interactorTypeMis) {
            final String fieldName = createFieldName(mi);

            query.addFacetField(fieldName);
        }

        QueryResponse queryResponse = executeQuery(query);

        List<FacetField> facetFields = queryResponse.getFacetFields();
        if (facetFields == null || facetFields.isEmpty()) {
            endOfFacetResults = true;
        } else {
            for (FacetField facetField : facetFields) {
                if (facetField.getValueCount() > 0) {
                    chunkResults += facetField.getValueCount();

                    if (results.containsKey(facetField.getName())) {
                        int current = results.get(facetField.getName());
                        results.put(facetField.getName(), current + facetField.getValueCount());
                    } else {
                        results.put(facetField.getName(), facetField.getValueCount());
                    }
                } else if (!results.containsKey(facetField.getName())) {
                    results.put(facetField.getName(), 0);
                }
            }

            if (chunkResults < CHUNK_FACET_THRESHOLD) {
                endOfFacetResults = true;
            }
        }

        firstResults += CHUNK_FACET_THRESHOLD;
    }

    return results;
}

From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.ontology.OntologySearcher.java

License:Apache License

public Set<String> getOntologyNames() throws SolrServerException {
    if (ontologyNames == null) {
        SolrQuery query = new SolrQuery("*:*");
        query.setStart(0);/*from   www.j av  a 2 s  . c o m*/
        query.setRows(0);

        // prepare faceting
        query.setFacet(true);
        query.setParam(FacetParams.FACET_FIELD, "ontology");
        query.setFacetLimit(10);
        query.setFacetMinCount(1);
        query.set(FacetParams.FACET_OFFSET, 0);

        // order by unique id
        query.addSortField(OntologyFieldNames.ID, SolrQuery.ORDER.asc);

        QueryResponse response = search(query, null);
        FacetField facetField = response.getFacetField("ontology");

        if (facetField.getValues() == null) {
            return Collections.EMPTY_SET;
        }

        ontologyNames = new HashSet<String>(facetField.getValues().size());

        for (FacetField.Count c : facetField.getValues()) {
            ontologyNames.add(c.getName());
        }
    }

    return ontologyNames;
}

From source file:uk.ac.ebi.phenotype.imaging.springrest.images.dao.ImagesSolrJ.java

License:Apache License

/**
 * Returns documents from Solr Index filtered by the passed in query
 * filterField e.g. annotationTerm:large ear
 * @throws SolrServerException /*from   ww  w .  j av  a2s  .  com*/
 * 
 * 
 */
public QueryResponse getFilteredDocsForQuery(String query, List<String> filterFields, String qf, String defType,
        int start, int length) throws SolrServerException {

    SolrQuery solrQuery = new SolrQuery();

    //if query field is set (such as auto_suggest), add this to the search
    if (!qf.equals("")) {
        solrQuery.set("qf", qf);
        log.debug("added qf=" + qf);
    }

    //if defType is set (such as edismax), add this to the search
    if (!defType.equals("")) {
        solrQuery.set("defType", defType);
        log.debug("set defType=" + defType);
    }

    solrQuery.setQuery(query);
    solrQuery.setStart(start);
    solrQuery.setRows(length);

    for (String fieldNValue : filterFields) {
        String[] colonStrings = fieldNValue.split(":");
        String filterField = colonStrings[0];
        String filterParam = fieldNValue.substring(fieldNValue.indexOf(":") + 1, fieldNValue.length());

        filterParam = processValueForSolr(filterParam);
        String fq = filterField + ":" + filterParam;

        log.debug("adding filter fieldNValue=" + fq);

        solrQuery.addFilterQuery(fq);
    }

    log.debug("Query is: " + solrQuery.toString());

    return server.query(solrQuery);
}

From source file:uk.ac.ebi.phenotype.service.ObservationService.java

License:Apache License

public List<Group> getDatapointsByColony(ArrayList<String> resourceName, String parameterStableId,
        String biologicalSampleGroup) throws SolrServerException {

    SolrQuery q = new SolrQuery();
    if (resourceName != null) {
        q.setQuery(ObservationDTO.DATASOURCE_NAME + ":"
                + StringUtils.join(resourceName, " OR " + ObservationDTO.DATASOURCE_NAME + ":"));
    } else {/* www . jav a2s  .  co m*/
        q.setQuery("*:*");
    }

    if (parameterStableId != null) {
        q.addFilterQuery(ObservationDTO.PARAMETER_STABLE_ID + ":" + parameterStableId);
    }

    q.addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":" + biologicalSampleGroup);

    q.set("group", true);
    q.set("group.field", ObservationDTO.COLONY_ID);
    q.set("group.limit", 10000);
    q.set("group.sort", ObservationDTO.DATE_OF_EXPERIMENT + " ASC");

    q.setFields(ObservationDTO.DATA_POINT, ObservationDTO.ZYGOSITY, ObservationDTO.SEX,
            ObservationDTO.DATE_OF_EXPERIMENT, ObservationDTO.ALLELE_SYMBOL, ObservationDTO.GENE_SYMBOL,
            ObservationDTO.COLONY_ID, ObservationDTO.ALLELE_ACCESSION_ID, ObservationDTO.PIPELINE_ID,
            ObservationDTO.PHENOTYPING_CENTER, ObservationDTO.GENE_ACCESSION_ID,
            ObservationDTO.STRAIN_ACCESSION_ID, ObservationDTO.PARAMETER_ID,
            ObservationDTO.PHENOTYPING_CENTER_ID);
    q.setRows(10000);

    System.out.println(
            "Solr url for getOverviewGenesWithMoreProceduresThan " + solr.getBaseURL() + "/select?" + q);
    return solr.query(q).getGroupResponse().getValues().get(0).getValues();

}

From source file:uk.ac.ebi.phenotype.service.ObservationService.java

License:Apache License

public List<String> getGenesWithMoreProcedures(int n, ArrayList<String> resourceName)
        throws SolrServerException, InterruptedException, ExecutionException {
    List<String> genes = new ArrayList<>();
    SolrQuery q = new SolrQuery();

    if (resourceName != null) {
        q.setQuery(ObservationDTO.DATASOURCE_NAME + ":"
                + StringUtils.join(resourceName, " OR " + ObservationDTO.DATASOURCE_NAME + ":"));
    } else {// w w  w. ja  v a  2s .co m
        q.setQuery("*:*");
    }

    String geneProcedurePivot = ObservationDTO.GENE_SYMBOL + "," + ObservationDTO.PROCEDURE_NAME;

    q.add("facet.pivot", geneProcedurePivot);

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

    System.out.println(
            "Solr url for getOverviewGenesWithMoreProceduresThan " + solr.getBaseURL() + "/select?" + q);
    QueryResponse response = solr.query(q);

    for (PivotField pivot : response.getFacetPivot().get(geneProcedurePivot)) {
        if (pivot.getPivot().size() >= n) {
            genes.add(pivot.getValue().toString());
        }
    }

    return genes;
}