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

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

Introduction

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

Prototype

public SolrQuery setQuery(String query) 

Source Link

Usage

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * @see org.ala.dao.FulltextSearchDao#writeSpeciesByRegionAndHigherTaxon(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.io.OutputStream)
 *///from   w w w. j  a v  a 2s .  c  o m
public int writeSpeciesByRegionAndHigherTaxon(String regionType, String regionName, String rank,
        List<String> higherTaxa, OutputStream output) throws Exception {
    int resultsCount = 0;
    try {
        StringBuffer queryStringBuffer = constructQueryForRegion(regionType, regionName, rank, higherTaxa,
                false);
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQueryType("standard");
        solrQuery.setRows(maxDownloadForConcepts);
        solrQuery.setQuery(queryStringBuffer.toString());

        int startIndex = 0;
        int pageSize = 1000;

        SearchResultsDTO results = doSolrQuery(solrQuery, (String[]) null, pageSize, startIndex, "score",
                "asc");
        CSVWriter csvWriter = new CSVWriter(new OutputStreamWriter(output), '\t', '"');

        csvWriter.writeNext(new String[] { "GUID", "Scientific name", "Taxon rank", "Common name",
                "Conservation status in Australia", "Conservation status in ACT", "Conservation status in NSW",
                "Conservation status in NT", "Conservation status in QLD", "Conservation status in SA",
                "Conservation status in TAS", "Conservation status in VIC", "Conservation status in WA" });

        while (results.getResults().size() > 0 && resultsCount <= maxDownloadForConcepts) {
            logger.debug("Start index: " + startIndex);
            List<SearchTaxonConceptDTO> concepts = results.getResults();
            for (SearchTaxonConceptDTO concept : concepts) {
                resultsCount++;
                String[] record = new String[] { concept.getGuid(), concept.getName(), concept.getRank(),
                        concept.getCommonNameSingle(), concept.getConservationStatusAUS(),
                        concept.getConservationStatusACT(), concept.getConservationStatusNSW(),
                        concept.getConservationStatusNT(), concept.getConservationStatusQLD(),
                        concept.getConservationStatusSA(), concept.getConservationStatusTAS(),
                        concept.getConservationStatusVIC(), concept.getConservationStatusWA(), };
                csvWriter.writeNext(record);
                csvWriter.flush();
            }
            startIndex += pageSize;
            results = doSolrQuery(solrQuery, null, pageSize, startIndex, "score", "asc");
        }

    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
    }
    return resultsCount;
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * Retrieves a simple count using the supplied query 
 * /*from  w ww.  j av  a  2  s .com*/
 * @param query
 * @return
 * @throws SolrServerException
 */
private int doCountQuery(String query) throws Exception {

    logger.info("Count query:  " + query);

    //do a query to retrieve a count
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setFacet(false);
    solrQuery.setFacetMinCount(0);
    solrQuery.setFacetLimit(10000);
    solrQuery.setRows(0);
    solrQuery.setStart(0);
    solrQuery.setQuery(query);

    QueryResponse qr = solrUtils.getSolrServer().query(solrQuery); // can throw exception
    SolrDocumentList sdl = qr.getResults();
    return (int) sdl.getNumFound();
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * @see org.ala.dao.FulltextSearchDao#getAllDatasetCounts()
 *///  w  ww . ja v  a 2s  . c  o m
@Override
public Map<String, Long> getAllDatasetCounts() throws Exception {
    Map<String, Long> counts = new HashMap<String, Long>();
    SearchResultsDTO searchResults = null;
    String queryString = "*:*";

    try {
        SolrQuery solrQuery = initCountsQuery(DATASET);
        solrQuery.setQuery(queryString);
        //searchResults = doSolrSearch(query, null, 0, 1, null, null);
        searchResults = doSolrQuery(solrQuery, null, 0, 1, "score", "asc");
        List<FacetResultDTO> facetResults = (List) searchResults.getFacetResults();

        for (FacetResultDTO fr : facetResults) {
            if (fr.getFieldName().equalsIgnoreCase(DATASET)) {
                for (FieldResultDTO res : fr.getFieldResult()) {
                    counts.put(res.getLabel(), res.getCount());
                }
            }
        }
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
    }

    return counts;
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 *//*from   www.j  av a2  s.co m*/
@Deprecated
public List<AutoCompleteDTO> _getAutoCompleteList(String value, IndexedTypes indexType, boolean gsOnly,
        int maxTerms) {
    StringBuffer queryString = new StringBuffer();

    //        String cleanQuery = ClientUtils.escapeQueryChars(value);//.toLowerCase();
    //        String cleanQuery = SolrUtils.cleanName(value);
    String cleanQuery = value.toLowerCase();
    cleanQuery = cleanQuery.trim().replaceAll("[()]", ""); //remove '(' and ')'
    cleanQuery = cleanQuery.replaceAll("\\s+", " "); //replace multiple spaces to single space

    if (StringUtils.trimToNull(cleanQuery) != null && cleanQuery.length() >= 3) {
        if (indexType != null) {
            queryString.append("idxtype:" + indexType);

            queryString.append(" AND ");
        }
        if (gsOnly) {
            queryString.append("georeferencedCount:[1 TO *]");
            queryString.append(" AND ");
        }
        queryString.append("(");
        List<AutoCompleteDTO> items = new ArrayList<AutoCompleteDTO>();
        SolrQuery solrQuery = null;

        solrQuery = new SolrQuery();
        queryString.append(" scientificName:\"" + cleanQuery + "\"");// boost classification ranking on top of list
        queryString.append(" OR ");
        queryString.append("auto_text:\"" + cleanQuery + "\"");
        queryString.append(" OR ");
        queryString.append("auto_text_edge:\"" + cleanQuery + "\""); //This field ensures that matches at the start of the term have a higher ranking
        queryString.append(" OR ");
        queryString.append("concat_name:\"" + SolrUtils.concatName(cleanQuery) + "\"");
        queryString.append(" OR ");
        queryString.append(replacePrefix("name_complete", cleanQuery)); // queryString.append("name_complete:\""+cleanQuery+"\"");
        queryString.append(" OR ");
        queryString.append(replacePrefix("stopped_common_name", cleanQuery));
        queryString.append(")");
        solrQuery.setQuery(queryString.toString());
        solrQuery.setQueryType("standard");
        solrQuery.setFields("*", "score");
        solrQuery.setRows(maxTerms);

        QueryResponse qr;
        try {
            qr = solrUtils.getSolrServer().query(solrQuery);

            SolrDocumentList sdl = qr.getResults();
            if (sdl != null && !sdl.isEmpty()) {
                for (SolrDocument doc : sdl) {
                    if (IndexedTypes.TAXON.toString().equalsIgnoreCase((String) doc.getFieldValue("idxtype"))) {
                        items.add(createAutoCompleteFromIndex(qr, doc, value));

                    }
                    //                else if(IndexedTypes.COLLECTION.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    //                    results.add(createCollectionFromIndex(qr, doc));
                    //               } else if(IndexedTypes.INSTITUTION.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    //                    results.add(createInstitutionFromIndex(qr, doc));
                    //               } else if(IndexedTypes.DATAPROVIDER.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    //                  results.add(createDataProviderFromIndex(qr, doc));
                    //               } else if(IndexedTypes.DATASET.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    //                    results.add(createDatasetFromIndex(qr, doc));
                    //               } else if(IndexedTypes.REGION.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    //                  results.add(createRegionFromIndex(qr, doc));
                    //               } else if(IndexedTypes.LOCALITY.toString().equalsIgnoreCase((String)doc.getFieldValue("idxtype"))){
                    ////                    results.add(createTaxonConceptFromIndex(qr, doc));
                    //               }
                }
            }
        } catch (Exception e) {
            logger.error(e);
        }
        return items;
    }
    return new ArrayList<AutoCompleteDTO>();
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

public Collection getRankingFacetByUserIdAndGuid(String userId, String guid) throws Exception {
    String key = null;/*from ww  w  .  jav a  2  s. co  m*/
    String sortField = null;
    try {
        String[] fq = new String[] {};
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQueryType("standard");
        solrQuery.setRows(0);
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(-1); // unlimited = -1

        if (guid == null || guid.length() < 1 || "*".equals(guid)) {
            key = "*";
            solrQuery.addFacetField("guid");
            sortField = "guid";
        } else {
            key = ClientUtils.escapeQueryChars(guid);
            sortField = "superColumnName";
        }
        solrQuery.addFacetField("superColumnName");
        solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND userId:" + userId + " AND guid:" + key);

        SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, sortField, "asc");
        if (qr == null || qr.getFacetResults() == null) {
            return new ArrayList();
        }
        return qr.getFacetResults();
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
        return new ArrayList();
    }
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

public Collection getUserIdFacetByGuid(String guid) throws Exception {
    String key = null;/*from www.j a  v  a  2  s . c o  m*/

    try {
        String[] fq = new String[] {};
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQueryType("standard");
        solrQuery.setRows(0);
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(-1); // unlimited = -1

        if (guid == null || guid.length() < 1 || "*".equals(guid)) {
            logger.info("Invalid guid: " + guid);
            return new ArrayList();
        } else {
            key = ClientUtils.escapeQueryChars(guid);
        }
        solrQuery.addFacetField("userId");
        solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND guid:" + key);

        SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, "userId", "asc");
        if (qr == null || qr.getFacetResults() == null) {
            return new ArrayList();
        }
        return qr.getFacetResults();
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
        return new ArrayList();
    }
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * NC 2013-03-13: This method is no longer being used.  This is because we never want to limit auto completes to 
 * exact matches as this would be confusing. This method should be deleted.
 * /*from  ww w .  ja va2 s. com*/
 * 
 * @param value
 * @param filterQuery
 * @param indexType
 * @param gsOnly
 * @param maxTerms
 * @return
 */
@Deprecated
private SolrQuery buildAutoExactMatchQuery(String value, String[] filterQuery, IndexedTypes indexType,
        boolean gsOnly, int maxTerms) {
    StringBuffer queryString = new StringBuffer();
    SolrQuery solrQuery = new SolrQuery();
    String cleanQuery = value.toLowerCase();
    cleanQuery = cleanQuery.trim().replaceAll("[()]", ""); //remove '(' and ')'
    cleanQuery = cleanQuery.replaceAll("\\s+", " "); //replace multiple spaces to single space

    if (indexType != null) {
        queryString.append("idxtype:" + indexType);
        queryString.append(" AND ");
    }
    if (gsOnly) {
        queryString.append("georeferencedCount:[1 TO *]");
        queryString.append(" AND ");
    }
    queryString.append("(");

    queryString.append("scientificNameText:\"" + cleanQuery + "\""); // boost classification to top of list (eg: genus, species, subspecies)
    queryString.append(" OR ");
    queryString.append("exact_text:\"" + cleanQuery + "\"");
    queryString.append(" OR ");
    queryString.append(replacePrefix("stopped_common_name", cleanQuery));

    queryString.append(")");
    solrQuery.setQuery(queryString.toString());
    solrQuery.setQueryType("standard");
    solrQuery.setFields("*", "score");
    solrQuery.setRows(maxTerms);

    addFqs(solrQuery, filterQuery);

    return solrQuery;
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

private SolrQuery buildAutoConcatMatchQuery(String value, String[] filterQuery, IndexedTypes indexType,
        boolean gsOnly, int maxTerms) {
    StringBuffer queryString = new StringBuffer();
    SolrQuery solrQuery = new SolrQuery();
    String cleanQuery = value.toLowerCase();
    cleanQuery = cleanQuery.trim().replaceAll("[()]", ""); //remove '(' and ')'
    cleanQuery = cleanQuery.replaceAll("\\s+", " "); //replace multiple spaces to single space

    if (indexType != null) {
        queryString.append("idxtype:" + indexType);
        queryString.append(" AND ");
    }// www  . ja va  2s  .  c om
    if (gsOnly) {
        queryString.append("georeferencedCount:[1 TO *]");
        queryString.append(" AND ");
    }
    queryString.append("(");

    queryString.append("concat_name:\"" + SolrUtils.concatName(cleanQuery) + "\"");
    queryString.append(" OR ");
    queryString.append("scientificNameText:\"" + cleanQuery + "\""); // boost classification to top of list (eg: genus, species, subspecies)
    queryString.append(" OR ");
    queryString.append(replacePrefix("stopped_common_name", cleanQuery));
    queryString.append(" OR ");
    queryString.append("auto_text:\"" + cleanQuery + "\"");
    queryString.append(" OR ");
    queryString.append("auto_text_edge:\"" + cleanQuery + "\""); //This field ensures that matches at the start of the term have a higher ranking

    queryString.append(")");
    solrQuery.setQuery(queryString.toString());
    solrQuery.setQueryType("standard");
    solrQuery.setFields("*", "score");
    solrQuery.setRows(maxTerms);

    addFqs(solrQuery, filterQuery);

    return solrQuery;
}

From source file:org.ala.dao.TaxonConceptSHDaoImpl.java

License:Open Source License

/**
  * Returns the LSID for the CB name usage for the supplied common name.
  */*from  ww  w.j  a  v a 2 s. c o m*/
  * When the common name returns more than 1 hit a result is only returned if all the scientific names match
  *
  * @return
  */
public String findLSIDByCommonName(String commonName) {
    String lsid = null;

    StringBuffer queryString = new StringBuffer();
    String cleanQuery = SolrUtils.cleanName(commonName);

    queryString.append("stopped_common_name:\"" + cleanQuery + "\"");
    queryString.append(" OR exact_text:\"" + cleanQuery + "\"");
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery(queryString.toString());
    solrQuery.setQueryType("standard");
    solrQuery.setFields("*", "score");
    solrQuery.setRows(10);

    try {
        QueryResponse qr = solrUtils.getSolrServer().query(solrQuery);
        SolrDocumentList sdl = qr.getResults();
        if (sdl != null && sdl.size() == 1) {
            SolrDocument doc = sdl.get(0);
            lsid = (String) doc.getFieldValue("guid");
        }
    } catch (Exception e) {
        // do nothing
    }

    if (lsid == null || lsid.length() < 1) {
        lsid = cbIdxSearcher.searchForLSIDCommonName(commonName);
    }
    return lsid;
}

From source file:org.ala.dao.TaxonConceptSHDaoImpl.java

License:Open Source License

public String findLSIDByConcatName(String name) {
    String concatName = SolrUtils.concatName(name);

    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("concat_name:\"" + concatName + "\"");
    solrQuery.setQueryType("standard");
    solrQuery.setFields("*", "score");
    solrQuery.setRows(10);/*  ww w  . j  av a  2 s .c  o m*/

    try {
        QueryResponse qr = solrUtils.getSolrServer().query(solrQuery);
        SolrDocumentList sdl = qr.getResults();
        if (sdl != null && sdl.size() == 1) {
            SolrDocument doc = sdl.get(0);
            return (String) doc.getFieldValue("guid");
        }
    } catch (Exception e) {
        // do nothing
    }
    return null;
}