Example usage for org.apache.solr.client.solrj.response QueryResponse getBeans

List of usage examples for org.apache.solr.client.solrj.response QueryResponse getBeans

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj.response QueryResponse getBeans.

Prototype

public <T> List<T> getBeans(Class<T> type) 

Source Link

Usage

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;
}