List of usage examples for org.apache.solr.client.solrj.response GroupCommand getValues
public List<Group> getValues()
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; }