List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
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; }