Example usage for org.apache.solr.client.solrj.response GroupCommand getValues

List of usage examples for org.apache.solr.client.solrj.response GroupCommand getValues

Introduction

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

Prototype

public List<Group> getValues() 

Source Link

Document

Returns the groups to be displayed.

Usage

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * Perform grouped facet query.// www.  j  a  v a2s  . c  om
 * <p>
 * facets is the list of grouped facets required
 * flimit restricts the number of groups returned
 * pageSize restricts the number of docs in each group returned
 * fl is the list of fields in the returned docs
 */
public List<GroupFacetResultDTO> searchGroupedFacets(SpatialSearchRequestParams searchParams) throws Exception {
    queryFormatUtils.formatSearchQuery(searchParams);
    String queryString = searchParams.getFormattedQuery();
    searchParams.setFacet(false);

    //get facet group counts
    SolrQuery query = initSolrQuery(searchParams, false, null);
    query.setQuery(queryString);
    query.setFields(null);
    //now use the supplied facets to add groups to the query
    query.add("group", "true");
    query.add("group.ngroups", "true");
    query.add("group.limit", String.valueOf(searchParams.getPageSize()));
    query.setRows(searchParams.getFlimit());
    query.setFields(searchParams.getFl());
    for (String facet : searchParams.getFacets()) {
        query.add("group.field", facet);
    }
    QueryResponse response = runSolrQuery(query, searchParams);
    GroupResponse groupResponse = response.getGroupResponse();

    List<GroupFacetResultDTO> output = new ArrayList();
    for (GroupCommand gc : groupResponse.getValues()) {
        List<GroupFieldResultDTO> list = new ArrayList<GroupFieldResultDTO>();

        String facet = gc.getName();
        for (Group v : gc.getValues()) {
            List<OccurrenceIndex> docs = (new DocumentObjectBinder()).getBeans(OccurrenceIndex.class,
                    v.getResult());

            //build facet displayName and fq
            String value = v.getGroupValue();
            Long count = v.getResult() != null ? v.getResult().getNumFound() : 0L;
            if (value == null) {
                list.add(new GroupFieldResultDTO("", count, "-" + facet + ":*", docs));
            } else {
                list.add(new GroupFieldResultDTO(getFacetValueDisplayName(facet, value), count,
                        facet + ":\"" + value + "\"", docs));
            }
        }

        output.add(new GroupFacetResultDTO(gc.getName(), list, gc.getNGroups()));
    }

    return output;
}

From source file:com.frank.search.solr.core.ResultHelper.java

License:Apache License

static <T> Map<Object, GroupResult<T>> convertGroupQueryResponseToGroupResultMap(Query query,
        Map<String, Object> objectNames, QueryResponse response, SolrTemplate solrTemplate, Class<T> clazz) {

    GroupResponse groupResponse = response.getGroupResponse();
    SolrDocumentList sdl = response.getResults();

    if (groupResponse == null) {
        return Collections.emptyMap();
    }//ww w.ja  va 2s  . c o m

    Map<Object, GroupResult<T>> result = new LinkedHashMap<Object, GroupResult<T>>();

    List<GroupCommand> values = groupResponse.getValues();
    for (GroupCommand groupCommand : values) {

        List<GroupEntry<T>> groupEntries = new ArrayList<GroupEntry<T>>();

        for (Group group : groupCommand.getValues()) {

            SolrDocumentList documentList = group.getResult();
            List<T> beans = solrTemplate.convertSolrDocumentListToBeans(documentList, clazz);
            Page<T> page = new PageImpl<T>(beans, query.getGroupOptions().getPageRequest(),
                    documentList.getNumFound());
            groupEntries.add(new SimpleGroupEntry<T>(group.getGroupValue(), page));
        }

        int matches = groupCommand.getMatches();
        Integer ngroups = groupCommand.getNGroups();
        String name = groupCommand.getName();

        PageImpl<GroupEntry<T>> page;
        if (ngroups != null) {
            page = new PageImpl<GroupEntry<T>>(groupEntries, query.getPageRequest(), ngroups.intValue());
        } else {
            page = new PageImpl<GroupEntry<T>>(groupEntries);
        }

        SimpleGroupResult<T> groupResult = new SimpleGroupResult<T>(matches, ngroups, name, page);
        result.put(name, groupResult);
        if (objectNames.containsKey(name)) {
            result.put(objectNames.get(name), groupResult);
        }
    }

    return result;
}

From source file:com.nridge.ds.solr.SolrResponseBuilder.java

License:Open Source License

private void populateGroupResponse(QueryResponse aQueryResponse) {
    Logger appLogger = mAppMgr.getLogger(this, "populateGroupResponse");

    appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER);

    GroupResponse groupResponse = aQueryResponse.getGroupResponse();
    if (groupResponse != null) {
        mDocument.addRelationship(Solr.RESPONSE_GROUP, createGroupsBag());
        Relationship groupRelationship = mDocument.getFirstRelationship(Solr.RESPONSE_GROUP);
        if (groupRelationship != null) {
            DataBag groupingBag = groupRelationship.getBag();

            List<GroupCommand> groupCommandList = groupResponse.getValues();
            if (groupCommandList != null) {
                String groupName;

                DataField dfGroupName = groupingBag.getFieldByName("group_name");
                groupingBag.setValueByName("group_total", groupCommandList.size());

                for (GroupCommand groupCommand : groupCommandList) {
                    groupName = groupCommand.getName();
                    if (StringUtils.isNotEmpty(groupName))
                        dfGroupName.addValue(groupName);

                    groupingBag.setValueByName("group_matches", groupCommand.getMatches());

                    List<Group> groupList = groupCommand.getValues();
                    if (groupList != null) {
                        for (Group groupMember : groupList)
                            groupRelationship.add(createGroupCollectionDocument(groupMember));
                    }/*from  ww w  .  j ava2 s. co  m*/
                }
            }
        }
    }

    appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART);
}

From source file:com.yaotrue.learn.solr.SolrjTest.java

License:Apache License

@Test
public void testGroup() throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery("*:*");

    solrQuery.set(GroupParams.GROUP, true);
    solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, true);
    solrQuery.set(GroupParams.GROUP_LIMIT, 12);
    solrQuery.set(GroupParams.GROUP_FORMAT, "grouped");
    solrQuery.set(GroupParams.GROUP_FACET, true);
    solrQuery.set(GroupParams.GROUP_FIELD, "style");

    QueryResponse queryResponse = solrClient.query(solrQuery);
    GroupResponse groupResponse = queryResponse.getGroupResponse();
    if (null != groupResponse) {
        List<GroupCommand> groupCommandList = groupResponse.getValues();
        for (GroupCommand groupCommand : groupCommandList) {
            int matches = groupCommand.getMatches();
            String name = groupCommand.getName();
            Integer ngroups = groupCommand.getNGroups();

            List<Group> groupList = groupCommand.getValues();
            for (Group group : groupList) {
                SolrDocumentList solrDocumentList = group.getResult();
                ListIterator<SolrDocument> listIterator = solrDocumentList.listIterator();
                while (listIterator.hasNext()) {
                    SolrDocument solrDocument = listIterator.next();
                    System.out.println(solrDocument.get("code"));
                }//from w  w  w. ja  v  a2 s  . com
            }
        }

    }
}

From source file:edu.unc.lib.dl.search.solr.service.SolrSearchService.java

License:Apache License

/**
 * Executes a SolrQuery based off of a search state and stores the results as BriefObjectMetadataBeans.
 * /*from   w  w  w. j  a  va 2s .  c o  m*/
 * @param query
 *           the solr query to be executed
 * @param searchState
 *           the search state used to generate this SolrQuery
 * @param isRetrieveFacetsRequest
 *           indicates if facet results hould be returned
 * @param returnQuery
 *           indicates whether to return the solr query object as part of the response.
 * @return
 * @throws SolrServerException
 */
@SuppressWarnings("unchecked")
protected SearchResultResponse executeSearch(SolrQuery query, SearchState searchState,
        boolean isRetrieveFacetsRequest, boolean returnQuery) throws SolrServerException {
    QueryResponse queryResponse = server.query(query);

    GroupResponse groupResponse = queryResponse.getGroupResponse();
    SearchResultResponse response = new SearchResultResponse();
    if (groupResponse != null) {
        List<BriefObjectMetadata> groupResults = new ArrayList<BriefObjectMetadata>();
        for (GroupCommand groupCmd : groupResponse.getValues()) {
            // response.setResultCount(groupCmd.getMatches());
            response.setResultCount(groupCmd.getNGroups());
            for (Group group : groupCmd.getValues()) {
                GroupedMetadataBean grouped = new GroupedMetadataBean(group.getGroupValue(),
                        this.server.getBinder().getBeans(BriefObjectMetadataBean.class, group.getResult()),
                        group.getResult().getNumFound());
                groupResults.add(grouped);
            }
        }
        response.setResultList(groupResults);

    } else {
        List<?> results = queryResponse.getBeans(BriefObjectMetadataBean.class);
        response.setResultList((List<BriefObjectMetadata>) results);
        // Store the number of results
        response.setResultCount(queryResponse.getResults().getNumFound());
    }

    if (isRetrieveFacetsRequest) {
        // Store facet results
        response.setFacetFields(facetFieldFactory.createFacetFieldList(queryResponse.getFacetFields()));
        // Add empty entries for any empty facets, then sort the list
        if (response.getFacetFields() != null) {
            if (searchState.getFacetsToRetrieve() != null
                    && searchState.getFacetsToRetrieve().size() != response.getFacetFields().size()) {
                facetFieldFactory.addMissingFacetFieldObjects(response.getFacetFields(),
                        searchState.getFacetsToRetrieve());
            }
        }
    } else {
        response.setFacetFields(null);
    }

    // Set search state that generated this result
    response.setSearchState(searchState);

    // Add the query to the result if it was requested
    if (returnQuery) {
        response.setGeneratedQuery(query);
    }
    return response;
}

From source file:influent.server.search.SolrBaseSearchIterator.java

License:MIT License

protected void doRefresh(int startIdx, int pageSize) {
    try {/*from   w  ww  .  jav  a2  s .co m*/
        getLogger().info("fetching solr page : (@" + startIdx + " of size " + pageSize + ")");
        _query.setRows(pageSize).setStart(startIdx);
        _qResp = _server.query(_query, METHOD.POST);
        boolean isGroupedResponse = _qResp.getGroupResponse() != null;

        if (_totalResults == -1) {
            if (isGroupedResponse) {
                List<GroupCommand> groupCommands = _qResp.getGroupResponse().getValues();
                _totalResults = 0;
                for (GroupCommand cmd : groupCommands) {
                    _totalResults += cmd.getNGroups();
                }
            } else {
                _totalResults = (int) _qResp.getResults().getNumFound();
            }
        }
        _curResults.clear();

        if (isGroupedResponse) {
            List<GroupCommand> groupCommands = _qResp.getGroupResponse().getValues();
            for (GroupCommand cmd : groupCommands) {
                List<Group> groups = cmd.getValues();

                for (Group group : groups) {
                    SolrDocumentList groupResults = group.getResult();
                    FL_SearchResult es = new FL_SearchResult();
                    Object result = buildResultFromGroupedDocuments(groupResults);
                    es.setResult(result);
                    double score = ((Float) groupResults.get(0).getFieldValue("score")).doubleValue();
                    es.setMatchScore(score);
                    _curResults.add(es);
                }

            }
        } else {
            for (SolrDocument sd : _qResp.getResults()) {
                FL_SearchResult es = new FL_SearchResult();
                Object result = buildResultFromDocument(sd);
                es.setResult(result);
                double score = ((Float) sd.getFieldValue("score")).doubleValue();
                es.setMatchScore(score);
                _curResults.add(es);
            }
        }

        _nextLocalIdx = 0;
    } catch (SolrException e) {
        getLogger().error("Solr query error: " + e.getMessage());
        throw new AvroRuntimeException("Solr query error: " + e.getMessage(), e);
    } catch (Exception e) {
        throw new AvroRuntimeException("Error paging search results " + e.getMessage(), e);
    }
}

From source file:org.broadleafcommerce.core.search.service.solr.SolrHelperServiceImpl.java

License:Apache License

@Override
public List<SolrDocument> getResponseDocuments(QueryResponse response) {
    List<SolrDocument> docs;

    if (response.getGroupResponse() == null) {
        docs = response.getResults();//from   w w  w .j a  v  a  2  s . co  m
    } else {
        docs = new ArrayList<SolrDocument>();
        GroupResponse gr = response.getGroupResponse();
        for (GroupCommand gc : gr.getValues()) {
            for (Group g : gc.getValues()) {
                for (SolrDocument d : g.getResult()) {
                    docs.add(d);
                }
            }
        }
    }

    return docs;
}

From source file:org.mousephenotype.cda.solr.service.ImageService.java

License:Apache License

public List<Group> getPhenotypeAssociatedImages(String geneAcc, String mpId, List<String> anatomyIds,
        boolean experimentalOnly, int count) throws SolrServerException, IOException {

    List<Group> groups = new ArrayList<>();
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("*:*");
    String fq = "";
    if (geneAcc != null) {
        solrQuery.addFilterQuery(ImageDTO.GENE_ACCESSION_ID + ":\"" + geneAcc + "\"");
    }/*  w w  w  .  j  ava 2s  .  com*/
    if (mpId != null) {
        fq = ImageDTO.MP_ID + ":\"" + mpId + "\" OR " + ImageDTO.INTERMEDIATE_MP_ID + ":\"" + mpId + "\" OR "
                + ImageDTO.TOP_LEVEL_MP_ID + ":\"" + mpId + "\"";
    }
    if (experimentalOnly) {
        solrQuery.addFilterQuery(ImageDTO.BIOLOGICAL_SAMPLE_GROUP + ":" + BiologicalSampleType.experimental);
    }
    if (anatomyIds != null && !anatomyIds.isEmpty()) {
        fq += (fq.isEmpty()) ? "" : " OR ";
        fq += anatomyIds.stream().collect(
                Collectors.joining("\" OR " + ImageDTO.ANATOMY_ID + ":\"", ImageDTO.ANATOMY_ID + ":\"", "\""));
        fq += " OR " + anatomyIds.stream()
                .collect(Collectors.joining("\" OR " + ImageDTO.INTERMEDIATE_ANATOMY_ID + ":\"",
                        ImageDTO.INTERMEDIATE_ANATOMY_ID + ":\"", "\""));
    }
    solrQuery.addFilterQuery(fq);
    solrQuery.add("group", "true").add("group.field", ImageDTO.PARAMETER_STABLE_ID).add("group.limit",
            Integer.toString(count));
    logger.info("associated images solr query: " + solrQuery);
    QueryResponse response = impcImagesCore.query(solrQuery);
    List<GroupCommand> groupResponse = response.getGroupResponse().getValues();
    for (GroupCommand groupCommand : groupResponse) {
        List<Group> localGroups = groupCommand.getValues();
        groups.addAll(localGroups);

    }
    return groups;

}

From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java

License:Apache License

public HashMap<String, GeneRowForHeatMap> getSecondaryProjectMapForGeneList(Set<String> geneAccessions,
        List<BasicBean> topLevelMps) throws IOException, SolrServerException {

    HashMap<String, GeneRowForHeatMap> geneRowMap = new HashMap<>(); // <geneAcc, row>

    SolrQuery q = new SolrQuery()
            .setQuery(geneAccessions.stream().collect(
                    Collectors.joining("\" OR \"", StatisticalResultDTO.MARKER_ACCESSION_ID + ":(\"", "\")")))
            .addField(StatisticalResultDTO.PROCEDURE_STABLE_ID)
            .addField(StatisticalResultDTO.MARKER_ACCESSION_ID)
            .addField(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME).addField(StatisticalResultDTO.MP_TERM_NAME)
            .addField(StatisticalResultDTO.MARKER_SYMBOL).addField(StatisticalResultDTO.STATUS)
            .addField(StatisticalResultDTO.SIGNIFICANT).setRows(Integer.MAX_VALUE)
            .setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc);

    q.addFilterQuery(StatisticalResultDTO.MP_TERM_ID + ":*"); // Ignore MPATH or other types of associations
    q.add("group", "true");
    q.add("group.field", StatisticalResultDTO.MARKER_ACCESSION_ID);
    q.set("group.limit", Integer.MAX_VALUE);

    GroupCommand groups = statisticalResultCore.query(q, SolrRequest.METHOD.POST).getGroupResponse().getValues()
            .get(0);/*  w  ww .  j av a2 s  .c  om*/

    for (Group group : groups.getValues()) {
        // Each group contains data for a different gene
        String geneAcc = group.getGroupValue();
        SolrDocumentList docs = group.getResult();
        GeneRowForHeatMap row = new GeneRowForHeatMap(geneAcc,
                docs.get(0).getFieldValue(StatisticalResultDTO.MARKER_SYMBOL).toString(), topLevelMps); // Fill row with default values for all mp top levels

        for (SolrDocument doc : docs) {
            List<String> currentTopLevelMps = (ArrayList<String>) doc
                    .get(StatisticalResultDTO.TOP_LEVEL_MP_TERM_NAME);

            // The current top level might be null, because the actual term is already a top level,
            // check the associated mp term to see, and add it if it's already top-level
            if (currentTopLevelMps == null) {
                if (topLevelMps.stream().anyMatch(x -> x.getName()
                        .equals(doc.getFieldValue(StatisticalResultDTO.MP_TERM_NAME).toString()))) {
                    currentTopLevelMps = new ArrayList<>();
                    currentTopLevelMps.add(doc.getFieldValue(StatisticalResultDTO.MP_TERM_NAME).toString());
                }
            }

            // The term might have been annotated to "mammalian phenotype" which doesn't have an icon in the grid.  Skip it
            if (currentTopLevelMps != null) {
                for (String mp : currentTopLevelMps) {
                    HeatMapCell cell = row.getXAxisToCellMap().containsKey(mp) ? row.getXAxisToCellMap().get(mp)
                            : new HeatMapCell(mp, HeatMapCell.THREE_I_NO_DATA);
                    if (doc.getFieldValue(StatisticalResultDTO.SIGNIFICANT) != null
                            && doc.getFieldValue(StatisticalResultDTO.SIGNIFICANT).toString()
                                    .equalsIgnoreCase("true")) {
                        cell.addStatus(HeatMapCell.THREE_I_DEVIANCE_SIGNIFICANT);
                    } else if (doc.getFieldValue(StatisticalResultDTO.STATUS).toString().equals("Success")) {
                        cell.addStatus(HeatMapCell.THREE_I_DATA_ANALYSED_NOT_SIGNIFICANT);
                    } else {
                        cell.addStatus(HeatMapCell.THREE_I_COULD_NOT_ANALYSE);
                    }

                    row.add(cell);
                }
            }
        }
        geneRowMap.put(geneAcc, row);
    }

    return geneRowMap;
}

From source file:org.mousephenotype.cda.solr.service.StatisticalResultService.java

License:Apache License

public List<GeneRowForHeatMap> getSecondaryProjectMapForResource(String resourceName) {

    List<GeneRowForHeatMap> res = new ArrayList<>();
    HashMap<String, GeneRowForHeatMap> geneRowMap = new HashMap<>(); // <geneAcc, row>
    List<BasicBean> procedures = getProceduresForDataSource(resourceName);

    for (BasicBean procedure : procedures) {
        SolrQuery q = new SolrQuery().setQuery(StatisticalResultDTO.RESOURCE_NAME + ":\"" + resourceName + "\"")
                .addFilterQuery(StatisticalResultDTO.PROCEDURE_STABLE_ID + ":" + procedure.getId())
                .setSort(StatisticalResultDTO.P_VALUE, SolrQuery.ORDER.asc)
                .addField(StatisticalResultDTO.PROCEDURE_STABLE_ID)
                .addField(StatisticalResultDTO.MARKER_ACCESSION_ID).addField(StatisticalResultDTO.MARKER_SYMBOL)
                .addField(StatisticalResultDTO.STATUS).addField(StatisticalResultDTO.P_VALUE).setRows(10000000)
                .setSort(StatisticalResultDTO.DOCUMENT_ID, SolrQuery.ORDER.asc);
        q.add("group", "true");
        q.add("group.field", StatisticalResultDTO.MARKER_ACCESSION_ID);
        q.add("group.sort", StatisticalResultDTO.P_VALUE + " asc");

        try {/*from  www.j av  a  2 s .  c  o  m*/
            GroupCommand groups = statisticalResultCore.query(q).getGroupResponse().getValues().get(0);

            for (Group group : groups.getValues()) {
                GeneRowForHeatMap row;
                HeatMapCell cell = new HeatMapCell();
                SolrDocument doc = group.getResult().get(0);
                String geneAcc = doc.get(StatisticalResultDTO.MARKER_ACCESSION_ID).toString();
                Map<String, HeatMapCell> xAxisToCellMap = new HashMap<>();

                if (geneRowMap.containsKey(geneAcc)) {
                    row = geneRowMap.get(geneAcc);
                    xAxisToCellMap = row.getXAxisToCellMap();
                } else {
                    row = new GeneRowForHeatMap(geneAcc);
                    row.setSymbol(doc.get(StatisticalResultDTO.MARKER_SYMBOL).toString());
                    xAxisToCellMap.put(procedure.getId(), null);
                }
                cell.setxAxisKey(doc.get(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString());
                if (doc.getFieldValue(StatisticalResultDTO.P_VALUE) != null && Double
                        .valueOf(doc.getFieldValue(StatisticalResultDTO.P_VALUE).toString()) < 0.0001) {
                    cell.addStatus(HeatMapCell.THREE_I_DEVIANCE_SIGNIFICANT);
                } else if (doc.getFieldValue(StatisticalResultDTO.STATUS).toString().equals("Success")) {
                    cell.addStatus(HeatMapCell.THREE_I_DATA_ANALYSED_NOT_SIGNIFICANT);
                } else {
                    cell.addStatus(HeatMapCell.THREE_I_COULD_NOT_ANALYSE);
                }
                xAxisToCellMap.put(doc.getFieldValue(StatisticalResultDTO.PROCEDURE_STABLE_ID).toString(),
                        cell);
                row.setXAxisToCellMap(xAxisToCellMap);
                geneRowMap.put(geneAcc, row);
            }
        } catch (SolrServerException | IOException ex) {
            logger.error(ex.getMessage());
        }
    }

    res = new ArrayList<>(geneRowMap.values());
    Collections.sort(res, new GeneRowForHeatMap3IComparator());

    return res;
}