List of usage examples for org.apache.solr.client.solrj.response Group getResult
public SolrDocumentList getResult()
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * Perform grouped facet query.//from w w w. 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(); }// www.ja v a 2 s .c om 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
@SuppressWarnings("unchecked") private Document createGroupCollectionDocument(Group aGroup) { Logger appLogger = mAppMgr.getLogger(this, "createGroupCollectionDocument"); appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER); Document groupCollectionDocument = createGroupCollection(); DataBag groupCollectionBag = groupCollectionDocument.getBag(); String groupName = aGroup.getGroupValue(); if (StringUtils.isNotEmpty(groupName)) groupCollectionBag.setValueByName("group_name", groupName); SolrDocumentList solrDocumentList = aGroup.getResult(); if (solrDocumentList != null) { groupCollectionBag.setValueByName("offset_start", solrDocumentList.getStart()); groupCollectionBag.setValueByName("total_count", solrDocumentList.getNumFound()); Document groupDocument = new Document(Solr.RESPONSE_GROUP_DOCUMENT, createDocumentTable()); populateDocument(groupDocument, solrDocumentList); groupCollectionDocument.addRelationship(groupDocument.getType(), groupDocument); }//from www. j av a 2s . c o m appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART); return groupCollectionDocument; }
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 www .j a v a 2 s.c o m } } } }
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 . ja v a2s .co 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 w w .j av a 2s .c o 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 ww .j av a2 s .c o 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<ImageSummary> getImageSummary(String markerAccessionId) throws SolrServerException, IOException { SolrQuery q = new SolrQuery(); q.setQuery("*:*"); q.setFilterQueries(ImageDTO.GENE_ACCESSION_ID + ":\"" + markerAccessionId + "\""); // TM decided only to display some procedures in the Summary q.addFilterQuery("(" + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_XRY* OR " + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_XRY* OR " + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_ALZ* OR " + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_PAT* OR " + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_EYE* OR " + ImageDTO.PROCEDURE_STABLE_ID + ":IMPC_HIS*" + ")"); q.set("group", true); q.set("group.field", ImageDTO.PROCEDURE_NAME); q.set("group.limit", 1); q.set("group.sort", ImageDTO.DATE_OF_EXPERIMENT + " DESC"); List<ImageSummary> res = new ArrayList<>(); for (Group group : impcImagesCore.query(q).getGroupResponse().getValues().get(0).getValues()) { ImageSummary iSummary = new ImageSummary(); iSummary.setNumberOfImages(group.getResult().getNumFound()); iSummary.setProcedureId(//from w w w .j a va 2 s . c om group.getResult().get(0).getFieldValue(ImageDTO.PROCEDURE_STABLE_ID).toString()); iSummary.setProcedureName(group.getResult().get(0).getFieldValue(ImageDTO.PROCEDURE_NAME).toString()); iSummary.setThumbnailUrl(group.getResult().get(0).getFieldValue(ImageDTO.JPEG_URL).toString() .replace("render_image", "render_thumbnail")); res.add(iSummary); } return res; }
From source file:org.mousephenotype.cda.solr.service.ImageService.java
License:Apache License
public List<String[]> getLaczExpressionSpreadsheet(String imageCollectionLinkBase) { SolrQuery query = new SolrQuery(); ArrayList<String[]> res = new ArrayList<>(); String[] aux = new String[0]; query.setQuery(ImageDTO.PROCEDURE_NAME + ":\"Adult LacZ\" AND " + ImageDTO.BIOLOGICAL_SAMPLE_GROUP + ":experimental"); query.setRows(1000000);/* www .j a va2 s. c om*/ query.addField(ImageDTO.GENE_SYMBOL); query.addField(ImageDTO.GENE_ACCESSION_ID); query.addField(ImageDTO.ALLELE_SYMBOL); query.addField(ImageDTO.COLONY_ID); query.addField(ImageDTO.BIOLOGICAL_SAMPLE_ID); query.addField(ImageDTO.ZYGOSITY); query.addField(ImageDTO.SEX); query.addField(ImageDTO.PARAMETER_ASSOCIATION_NAME); query.addField(ImageDTO.PARAMETER_STABLE_ID); query.addField(ImageDTO.PARAMETER_ASSOCIATION_VALUE); query.addField(ImageDTO.GENE_ACCESSION_ID); query.addField(ImageDTO.PHENOTYPING_CENTER); query.setFacet(true); query.setFacetLimit(100); query.addFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME); query.set("group", true); query.set("group.limit", 100000); query.set("group.field", ImageDTO.BIOLOGICAL_SAMPLE_ID); try { QueryResponse solrResult = impcImagesCore.query(query); ArrayList<String> allParameters = new ArrayList<>(); List<String> header = new ArrayList<>(); header.add("Gene Symbol"); header.add("MGI Gene Id"); header.add("Allele Symbol"); header.add("Colony Id"); header.add("Biological Sample Id"); header.add("Zygosity"); header.add("Sex"); header.add("Phenotyping Centre"); logger.info(SolrUtils.getBaseURL(impcImagesCore) + "/select?" + query); // Get facets as we need to turn them into columns for (Count facet : solrResult.getFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME).getValues()) { allParameters.add(facet.getName()); header.add(facet.getName()); } header.add("image_collection_link"); res.add(header.toArray(aux)); for (Group group : solrResult.getGroupResponse().getValues().get(0).getValues()) { List<String> row = new ArrayList<>(); ArrayList<String> params = new ArrayList<>(); ArrayList<String> paramValues = new ArrayList<>(); String urlToImagePicker = imageCollectionLinkBase + "/imageComparator?acc="; for (SolrDocument doc : group.getResult()) { if (row.size() == 0) { row.add(doc.getFieldValues(ImageDTO.GENE_SYMBOL).iterator().next().toString()); row.add(doc.getFieldValues(ImageDTO.GENE_ACCESSION_ID).iterator().next().toString()); urlToImagePicker += doc.getFieldValue(ImageDTO.GENE_ACCESSION_ID) + "¶meter_stable_id="; urlToImagePicker += doc.getFieldValue(ImageDTO.PARAMETER_STABLE_ID); if (doc.getFieldValue(ImageDTO.ALLELE_SYMBOL) != null) { row.add(doc.getFieldValue(ImageDTO.ALLELE_SYMBOL).toString()); } row.add(doc.getFieldValue(ImageDTO.COLONY_ID).toString()); row.add(doc.getFieldValue(ImageDTO.BIOLOGICAL_SAMPLE_ID).toString()); if (doc.getFieldValue(ImageDTO.ZYGOSITY) != null) { row.add(doc.getFieldValue(ImageDTO.ZYGOSITY).toString()); } row.add(doc.getFieldValue(ImageDTO.SEX).toString()); row.add(doc.getFieldValue(ImageDTO.PHENOTYPING_CENTER).toString()); } if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME) != null) { for (int i = 0; i < doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME).size(); i++) { params.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME) .toArray(new Object[0])[i].toString()); if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE) != null) { paramValues.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE) .toArray(new Object[0])[i].toString()); } else { paramValues.add(Constants.NO_INFORMATION_AVAILABLE); } } } } for (String tissue : allParameters) { if (params.contains(tissue)) { row.add(paramValues.get(params.indexOf(tissue))); } else { row.add(""); } } row.add(urlToImagePicker); res.add(row.toArray(aux)); } } catch (SolrServerException | IOException e) { e.printStackTrace(); } return res; }
From source file:org.mousephenotype.cda.solr.service.ImpressService.java
License:Apache License
/** * @since 2015/07/17//from w w w .j av a2 s .co m * @author tudose * @return */ public List<ProcedureDTO> getProceduresByPipeline(String pipelineStableId) { List<ProcedureDTO> procedures = new ArrayList<>(); try { SolrQuery query = new SolrQuery().setQuery(ImpressDTO.PIPELINE_STABLE_ID + ":" + pipelineStableId) .addField(ImpressDTO.PROCEDURE_ID).addField(ImpressDTO.PROCEDURE_NAME) .addField(ImpressDTO.PROCEDURE_STABLE_ID).addField(ImpressDTO.PROCEDURE_STABLE_KEY); query.set("group", true); query.set("group.field", ImpressDTO.PROCEDURE_STABLE_ID); query.setRows(10000); query.set("group.limit", 1); System.out.println("URL for getProceduresByStableIdRegex " + SolrUtils.getBaseURL(pipelineCore) + "/select?" + query); QueryResponse response = pipelineCore.query(query); for (Group group : response.getGroupResponse().getValues().get(0).getValues()) { ProcedureDTO procedure = new ProcedureDTO( Long.getLong(group.getResult().get(0).getFirstValue(ImpressDTO.PROCEDURE_ID).toString()), Long.getLong( group.getResult().get(0).getFirstValue(ImpressDTO.PROCEDURE_STABLE_KEY).toString()), group.getResult().get(0).getFirstValue(ImpressDTO.PROCEDURE_STABLE_ID).toString(), group.getResult().get(0).getFirstValue(ImpressDTO.PROCEDURE_NAME).toString()); procedures.add(procedure); } } catch (SolrServerException | IOException | IndexOutOfBoundsException e) { e.printStackTrace(); } return procedures; }