List of usage examples for org.apache.solr.client.solrj SolrQuery SolrQuery
public SolrQuery()
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#findByFulltext(SpatialSearchRequestParams) *///from w w w. j a v a 2 s.c o m @Override public SolrDocumentList findByFulltext(SpatialSearchRequestParams searchParams) throws Exception { SolrDocumentList sdl = null; try { queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(queryString); solrQuery.setFields(searchParams.getFl()); solrQuery.setFacet(false); solrQuery.setRows(searchParams.getPageSize()); sdl = runSolrQuery(solrQuery, searchParams).getResults(); } catch (SolrServerException ex) { logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex); } return sdl; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#getStatistics(SpatialSearchRequestParams) *//*from w w w . j a v a 2 s .co m*/ public Map<String, FieldStatsInfo> getStatistics(SpatialSearchRequestParams searchParams) throws Exception { try { queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(queryString); for (String field : searchParams.getFacets()) { solrQuery.setGetFieldStatistics(field); } QueryResponse qr = runSolrQuery(solrQuery, searchParams); if (logger.isDebugEnabled()) { logger.debug(qr.getFieldStatsInfo()); } return qr.getFieldStatsInfo(); } catch (SolrServerException ex) { logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex); } return null; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
@Cacheable(cacheName = "legendCache") public List<LegendItem> getLegend(SpatialSearchRequestParams searchParams, String facetField, String[] cutpoints) throws Exception { List<LegendItem> legend = new ArrayList<LegendItem>(); queryFormatUtils.formatSearchQuery(searchParams); if (logger.isInfoEnabled()) { logger.info("search query: " + searchParams.getFormattedQuery()); }//from w ww. ja v a 2s . c o m SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setQuery(searchParams.getFormattedQuery()); solrQuery.setRows(0); solrQuery.setFacet(true); //is facet query? if (cutpoints == null) { //special case for the decade if (DECADE_FACET_NAME.equals(facetField)) initDecadeBasedFacet(solrQuery, "occurrence_year"); else solrQuery.addFacetField(facetField); } else { solrQuery.addFacetQuery("-" + facetField + ":[* TO *]"); for (int i = 0; i < cutpoints.length; i += 2) { solrQuery.addFacetQuery(facetField + ":[" + cutpoints[i] + " TO " + cutpoints[i + 1] + "]"); } } solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1);//MAX_DOWNLOAD_SIZE); // unlimited = -1 solrQuery.setFacetMissing(true); QueryResponse qr = runSolrQuery(solrQuery, searchParams.getFormattedFq(), 1, 0, "score", "asc"); List<FacetField> facets = qr.getFacetFields(); if (facets != null) { for (FacetField facet : facets) { List<FacetField.Count> facetEntries = facet.getValues(); if (facet.getName().contains(facetField) && (facetEntries != null) && (facetEntries.size() > 0)) { int i = 0; for (i = 0; i < facetEntries.size(); i++) { FacetField.Count fcount = facetEntries.get(i); if (fcount.getCount() > 0) { String fq = facetField + ":\"" + fcount.getName() + "\""; if (fcount.getName() == null) { fq = "-" + facetField + ":[* TO *]"; } legend.add(new LegendItem(fcount.getName(), fcount.getCount(), fq)); } } break; } } } //check if we have query based facets Map<String, Integer> facetq = qr.getFacetQuery(); if (facetq != null && facetq.size() > 0) { for (Entry<String, Integer> es : facetq.entrySet()) { legend.add(new LegendItem(es.getKey(), es.getValue(), es.getKey())); } } //check to see if we have a date range facet List<FacetField> facetDates = qr.getFacetDates(); if (facetDates != null && !facetDates.isEmpty()) { FacetField ff = facetDates.get(0); String firstDate = null; for (FacetField.Count facetEntry : ff.getValues()) { String startDate = facetEntry.getName(); if (firstDate == null) { firstDate = startDate; } String finishDate; if (DECADE_PRE_1850_LABEL.equals(startDate)) { startDate = "*"; finishDate = firstDate; } else { int startYear = Integer.parseInt(startDate.substring(0, 4)); finishDate = (startYear - 1) + "-12-31T23:59:59Z"; } legend.add(new LegendItem(facetEntry.getName(), facetEntry.getCount(), "occurrence_year:[" + startDate + " TO " + finishDate + "]")); } } return legend; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
public FacetField getFacet(SpatialSearchRequestParams searchParams, String facet) throws Exception { queryFormatUtils.formatSearchQuery(searchParams); if (logger.isInfoEnabled()) { logger.info("search query: " + searchParams.getFormattedQuery()); }//w w w .j a va 2s .c om SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setQuery(searchParams.getFormattedQuery()); solrQuery.setRows(0); solrQuery.setFacet(true); solrQuery.addFacetField(facet); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1); //MAX_DOWNLOAD_SIZE); // unlimited = -1 QueryResponse qr = runSolrQuery(solrQuery, searchParams.getFormattedFq(), 1, 0, "score", "asc"); return qr.getFacetFields().get(0); }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
public Map<String, Integer> getOccurrenceCountsForTaxa(List<String> taxa) throws Exception { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setRows(0);/*from w w w.j av a 2 s. c om*/ solrQuery.setFacet(true); solrQuery.setFacetLimit(taxa.size()); StringBuilder sb = new StringBuilder(); Map<String, Integer> counts = new HashMap<String, Integer>(); Map<String, String> lftToGuid = new HashMap<String, String>(); for (String lsid : taxa) { //get the lft and rgt value for the taxon String[] values = searchUtils.getTaxonSearch(lsid); //first value is the search string if (sb.length() > 0) sb.append(" OR "); sb.append(values[0]); lftToGuid.put(values[0], lsid); //add the query part as a facet solrQuery.add("facet.query", values[0]); } solrQuery.setQuery(sb.toString()); //solrQuery.add("facet.query", "confidence:" + os.getRange()); QueryResponse qr = runSolrQuery(solrQuery, null, 1, 0, "score", "asc"); Map<String, Integer> facetQueries = qr.getFacetQuery(); for (String facet : facetQueries.keySet()) { //add all the counts based on the query value that was substituted String lsid = lftToGuid.get(facet); Integer count = facetQueries.get(facet); if (lsid != null && count != null) counts.put(lsid, count); } if (logger.isDebugEnabled()) { logger.debug(facetQueries); } return counts; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * Get SOLR max boolean clauses.//from w w w .ja v a 2s . c om * * @return */ public int getMaxBooleanClauses() { if (maxBooleanClauses == 0) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setFacet(false); solrQuery.setRows(0); int value = 1024; boolean ok = false; int step = -1; while (step != 0 || ok == false) { String q = 1 + StringUtils.repeat(" AND 1", value - 1); solrQuery.setQuery(q); try { query(solrQuery, queryMethod); //throws exception when too many boolean clauses if (step == -1) value *= 2; //push upper limit else step /= 2; ok = true; } catch (Exception e) { if (step == -1) step = value / 2; //set initial step value else if (ok == false && step > 1) step /= 2; ok = false; } if (step != -1) { if (ok) value += step; else value -= step; } } maxBooleanClauses = value; } queryFormatUtils.setMaxBooleanClauses(maxBooleanClauses); return maxBooleanClauses; }
From source file:au.org.intersect.dms.catalogue.db.SolrIndexFacade.java
License:Open Source License
/** * Returns all datasets owned by the user matching specified full text search query * //from w w w . j a v a2 s . c o m * @param username * username of the owner in DMS system * @param userProjects * list of project codes from booking system this username belongs to * @param query * full text search query * @param startIndex * index of the first dataset to display on the curect page * @param pageSize * max number of datasets to display on each page * @return datasets of this user (one page) */ public DatasetSearchResult findDatasets(String username, List<Long> projects, String query, int startIndex, int pageSize) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setFields(ID); solrQuery.setStart(startIndex); solrQuery.setRows(pageSize); solrQuery.setSortField(ID, ORDER.asc); StringBuilder queryString = new StringBuilder(); if (query == null || "".equals(query)) { queryString.append("dataset.metadata_t:*"); } else { queryString.append(query); } queryString.append(" AND (dataset.owner_s:").append(username); String projectQuery = buildProjectCriteria(projects); if (!projectQuery.isEmpty()) { queryString.append(" OR ").append(projectQuery); } queryString.append(")"); solrQuery.setQuery(queryString.toString()); QueryResponse solrResponse = DbDataset.search(solrQuery); SolrDocumentList docs = solrResponse.getResults(); List<Dataset> datasets = convertSolrDocuments2Datasets(docs); DatasetSearchResult result = new DatasetSearchResult(); result.setDatasets(datasets); result.setTotalSize(docs != null ? docs.getNumFound() : 0); return result; }
From source file:brooklyn.entity.nosql.solr.SolrJSupport.java
License:Apache License
public Iterable<SolrDocument> getDocuments() throws Exception { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery("*:*"); return server.query(solrQuery).getResults(); }
From source file:cn.edu.pku.lib.dataverse.SolrSearchServiceBean.java
public long getDatasetCount() throws SearchException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery("*:*"); solrQuery.setFilterQueries(SearchFields.TYPE + ":datasets", SearchFields.PUBLICATION_STATUS + ":Published"); solrQuery.setStart(0);/*from ww w . j a v a 2s . c o m*/ solrQuery.setRows(0); QueryResponse queryResponse = null; try { queryResponse = solrServer.query(solrQuery); return queryResponse.getResults().getNumFound(); } catch (HttpSolrServer.RemoteSolrException | SolrServerException ex) { logger.log(Level.INFO, null, ex); throw new SearchException("Internal Dataverse Search Engine Error", ex); } }
From source file:cn.edu.pku.lib.dataverse.SolrSearchServiceBean.java
public long getDataverseCount() throws SearchException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery("*:*"); solrQuery.setFilterQueries(SearchFields.TYPE + ":dataverses", SearchFields.PUBLICATION_STATUS + ":Published"); solrQuery.setStart(0);//from w ww. j a v a 2 s .c om solrQuery.setRows(0); QueryResponse queryResponse = null; try { queryResponse = solrServer.query(solrQuery); return queryResponse.getResults().getNumFound(); } catch (HttpSolrServer.RemoteSolrException | SolrServerException ex) { logger.log(Level.INFO, null, ex); throw new SearchException("Internal Dataverse Search Engine Error", ex); } }