List of usage examples for org.apache.solr.client.solrj.response QueryResponse getBeans
public <T> List<T> getBeans(Class<T> type)
From source file:at.pagu.soldockr.core.SolrTemplate.java
License:Apache License
@Override public <T> T executeObjectQuery(Query query, Class<T> clazz) { Assert.notNull(query, "Query must not be 'null'."); Assert.notNull(clazz, "Target class must not be 'null'."); query.setPageRequest(new PageRequest(0, 1)); QueryResponse response = executeQuery(query); if (response.getResults().size() > 0) { if (response.getResults().size() > 1) { LOGGER.warn(//from w ww . jav a 2s. com "More than 1 result found for singe result query ('{}'), returning first entry in list"); } return response.getBeans(clazz).get(0); } return null; }
From source file:at.pagu.soldockr.core.SolrTemplate.java
License:Apache License
public <T> Page<T> executeListQuery(Query query, Class<T> clazz) { Assert.notNull(query, "Query must not be 'null'."); Assert.notNull(clazz, "Target class must not be 'null'."); QueryResponse response = executeQuery(query); // TODO: implement the following for grouping results // if (query.hasGroupBy() && query.getGroupBy().size() > 1) { // return SolrResultHelper.flattenGroupedQueryResult(query, response, clazz, getSolrServer().getBinder()); // }/* w ww.j a v a 2 s.c o m*/ return new PageImpl<T>(response.getBeans(clazz), query.getPageRequest(), response.getResults().getNumFound()); }
From source file:at.pagu.soldockr.core.SolrTemplate.java
License:Apache License
@Override public <T> FacetPage<T> executeFacetQuery(FacetQuery query, Class<T> clazz) { Assert.notNull(query, "Query must not be 'null'."); Assert.notNull(clazz, "Target class must not be 'null'."); QueryResponse response = executeQuery(query); FacetPage<T> page = new FacetPage<T>(response.getBeans(clazz), query.getPageRequest(), response.getResults().getNumFound()); page.addAllFacetResultPages(ResultHelper.convertFacetQueryResponseToFacetPageMap(query, response)); return page;/* w w w . j av a 2 s . c o m*/ }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * Process the {@see org.apache.solr.client.solrj.response.QueryResponse} from a SOLR search and return * a {@link au.org.ala.biocache.dto.SearchResultDTO} * * @param qr/* ww w . j a v a 2 s . c o m*/ * @param solrQuery * @return */ private SearchResultDTO processSolrResponse(SearchRequestParams params, QueryResponse qr, SolrQuery solrQuery, Class resultClass) { SearchResultDTO searchResult = new SearchResultDTO(); SolrDocumentList sdl = qr.getResults(); // Iterator it = qr.getResults().iterator() // Use for download List<FacetField> facets = qr.getFacetFields(); List<FacetField> facetDates = qr.getFacetDates(); Map<String, Integer> facetQueries = qr.getFacetQuery(); if (facetDates != null) { if (logger.isDebugEnabled()) { logger.debug("Facet dates size: " + facetDates.size()); } facets.addAll(facetDates); } List<OccurrenceIndex> results = qr.getBeans(resultClass); //facet results searchResult.setTotalRecords(sdl.getNumFound()); searchResult.setStartIndex(sdl.getStart()); searchResult.setPageSize(solrQuery.getRows()); //pageSize searchResult.setStatus("OK"); String[] solrSort = StringUtils.split(solrQuery.getSortField(), " "); // e.g. "taxon_name asc" if (logger.isDebugEnabled()) { logger.debug("sortField post-split: " + StringUtils.join(solrSort, "|")); } searchResult.setSort(solrSort[0]); // sortField searchResult.setDir(solrSort[1]); // sortDirection searchResult.setQuery(params.getUrlParams()); //this needs to be the original URL>>>> searchResult.setOccurrences(results); List<FacetResultDTO> facetResults = buildFacetResults(facets); //all belong to uncertainty range for now if (facetQueries != null && !facetQueries.isEmpty()) { Map<String, String> rangeMap = rangeBasedFacets.getRangeMap("uncertainty"); List<FieldResultDTO> fqr = new ArrayList<FieldResultDTO>(); for (String value : facetQueries.keySet()) { if (facetQueries.get(value) > 0) fqr.add(new FieldResultDTO(rangeMap.get(value), facetQueries.get(value), value)); } facetResults.add(new FacetResultDTO("uncertainty", fqr)); } //handle all the range based facets if (qr.getFacetRanges() != null) { for (RangeFacet rfacet : qr.getFacetRanges()) { List<FieldResultDTO> fqr = new ArrayList<FieldResultDTO>(); if (rfacet instanceof Numeric) { Numeric nrfacet = (Numeric) rfacet; List<RangeFacet.Count> counts = nrfacet.getCounts(); //handle the before if (nrfacet.getBefore().intValue() > 0) { fqr.add(new FieldResultDTO("[* TO " + getUpperRange(nrfacet.getStart().toString(), nrfacet.getGap(), false) + "]", nrfacet.getBefore().intValue())); } for (RangeFacet.Count count : counts) { String title = getRangeValue(count.getValue(), nrfacet.getGap()); fqr.add(new FieldResultDTO(title, count.getCount())); } //handle the after if (nrfacet.getAfter().intValue() > 0) { fqr.add(new FieldResultDTO("[" + nrfacet.getEnd().toString() + " TO *]", nrfacet.getAfter().intValue())); } facetResults.add(new FacetResultDTO(nrfacet.getName(), fqr)); } } } //update image URLs for (OccurrenceIndex oi : results) { updateImageUrls(oi); } searchResult.setFacetResults(facetResults); // The query result is stored in its original format so that all the information // returned is available later on if needed searchResult.setQr(qr); return searchResult; }
From source file:com.apexxs.neonblack.solr.Queries.java
License:Apache License
public List<GeoNamesEntry> doNameQuery(String searchTerm) { List<GeoNamesEntry> entries = new ArrayList<>(); String sortString;/*w w w. j a va 2 s.c o m*/ if (config.populationSort()) { sortString = "population desc, score desc"; } else { sortString = "score desc"; } ModifiableSolrParams params = new ModifiableSolrParams(); params.set("qt", "/nameSearcher"); params.set("q", searchTerm); params.set("mm", "100%"); params.set("qs", "3"); params.set("fl", "*, score"); params.set("sort", sortString); params.set("rows", config.getMaxHits()); try { QueryResponse response = geonamesCore.query(params); entries = response.getBeans(GeoNamesEntry.class); } catch (Exception ex) { logger.error("Error in doNameQuery for argument " + searchTerm + " " + ex.getMessage()); } return entries; }
From source file:com.apexxs.neonblack.solr.Queries.java
License:Apache License
public List<GeoNamesEntry> doNameQuery(String searchTerm, String minShouldMatch) { List<GeoNamesEntry> entries = new ArrayList<>(); String sortString;//from w ww . j a v a 2 s.c om if (config.populationSort()) { sortString = "population desc, score desc"; } else { sortString = "score desc"; } ModifiableSolrParams params = new ModifiableSolrParams(); params.set("qt", "/nameSearcher"); params.set("q", searchTerm); params.set("mm", minShouldMatch); params.set("fl", "*, score"); params.set("sort", sortString); params.set("rows", config.getMaxHits()); try { QueryResponse response = geonamesCore.query(params); entries = response.getBeans(GeoNamesEntry.class); } catch (Exception ex) { logger.error("Error in doNameQuery for argument " + searchTerm + " " + ex.getMessage()); } return entries; }
From source file:com.apexxs.neonblack.solr.Queries.java
License:Apache License
public List<GeoNamesEntry> doSelectQuery(String searchTerm) { List<GeoNamesEntry> entries = new ArrayList<>(); String sortString;//from w w w. j a v a2 s . co m if (config.populationSort()) { sortString = "population desc, score desc"; } else { sortString = "score desc"; } ModifiableSolrParams params = new ModifiableSolrParams(); params.set("qt", "/select"); params.set("q", searchTerm); params.set("fl", "*, score"); params.set("sort", sortString); params.set("rows", config.getMaxHits()); try { QueryResponse response = geonamesCore.query(params); entries = response.getBeans(GeoNamesEntry.class); } catch (Exception ex) { logger.error("Error in doSelectQuery for argument " + searchTerm + " " + ex.getMessage()); } return entries; }
From source file:com.apexxs.neonblack.solr.Queries.java
License:Apache License
public List<BorderData> doBorderQuery(String lonLat) { List<BorderData> entries = new ArrayList<>(); String queryString = "shape:\"Intersects(" + lonLat + ")\""; ModifiableSolrParams params = new ModifiableSolrParams(); params.add("q", "*:*"); params.add("fq", queryString); try {//from w w w . ja v a 2 s.c o m QueryResponse response = geodataCore.query(params); entries = response.getBeans(BorderData.class); } catch (Exception ex) { logger.error("Error in doBorderQuery for argument " + lonLat + " " + ex.getMessage()); } return entries; }
From source file:com.apexxs.neonblack.solr.Queries.java
License:Apache License
public List<GeoNamesEntry> geoNamesWithinDistanceOf(String lonLat, String distanceInKm) { List<GeoNamesEntry> entries = new ArrayList<>(); ModifiableSolrParams params = new ModifiableSolrParams(); params.add("q", "*:*"); params.add("fq", "{!geofilt sfield=lonLat}"); params.add("pt", lonLat); params.add("d", distanceInKm); params.add("rows", config.getNumProximalHits().toString()); try {/*from www . j av a 2 s.c o m*/ QueryResponse response = geonamesCore.query(params); entries = response.getBeans(GeoNamesEntry.class); } catch (Exception ex) { logger.error("Error in geoNamesWithinDistance for argument " + lonLat + ", " + distanceInKm + " " + ex.getMessage()); } return entries; }
From source file:com.frank.search.service.impl.CustomSolrRepositoryImpl.java
License:Apache License
public PageProductResponse findProductsByCustom(Product product) { SolrQuery sq = new SolrQuery(); sq.set("q", "goods_name:"); sq.set("fl", "stores_name", "id", "goods_name"); QueryResponse queryResponse = null;// solrTemplate.querySolrByCustomDefine(sq); List<Product> productList = queryResponse.getBeans(Product.class); PageProductResponse pageModel = new PageProductResponse(); pageModel.setTotalPages(queryResponse.getResults().getNumFound()); return pageModel; }