List of usage examples for org.springframework.data.solr.core.query Query getGroupOptions
@Nullable GroupOptions getGroupOptions();
From source file:org.springframework.data.solr.core.DefaultQueryParser.java
private void processGroupOptions(SolrQuery solrQuery, Query query) { GroupOptions groupOptions = query.getGroupOptions(); if (groupOptions == null || (CollectionUtils.isEmpty(groupOptions.getGroupByFields()) && CollectionUtils.isEmpty(groupOptions.getGroupByFunctions()) && CollectionUtils.isEmpty(groupOptions.getGroupByQueries()))) { return;//ww w . j a va2s. co m } solrQuery.set(GroupParams.GROUP, true); solrQuery.set(GroupParams.GROUP_MAIN, groupOptions.isGroupMain()); solrQuery.set(GroupParams.GROUP_FORMAT, "grouped"); if (!CollectionUtils.isEmpty(groupOptions.getGroupByFields())) { for (Field field : groupOptions.getGroupByFields()) { solrQuery.add(GroupParams.GROUP_FIELD, field.getName()); } } if (!CollectionUtils.isEmpty(groupOptions.getGroupByFunctions())) { for (Function function : groupOptions.getGroupByFunctions()) { String functionFragment = createFunctionFragment(function, 0); setObjectNameOnGroupQuery(query, function, functionFragment); solrQuery.add(GroupParams.GROUP_FUNC, functionFragment); } } if (!CollectionUtils.isEmpty(groupOptions.getGroupByQueries())) { for (Query groupQuery : groupOptions.getGroupByQueries()) { String queryFragment = getQueryString(groupQuery); setObjectNameOnGroupQuery(query, groupQuery, queryFragment); solrQuery.add(GroupParams.GROUP_QUERY, queryFragment); } } if (groupOptions.getSort() != null) { for (Order order : groupOptions.getSort()) { solrQuery.add(GroupParams.GROUP_SORT, order.getProperty().trim() + " " + (order.isAscending() ? ORDER.asc : ORDER.desc)); } } if (groupOptions.getCachePercent() > 0) { solrQuery.add(GroupParams.GROUP_CACHE_PERCENTAGE, String.valueOf(groupOptions.getCachePercent())); } if (groupOptions.getLimit() != null && groupOptions.getLimit() >= 0) { solrQuery.set(GroupParams.GROUP_LIMIT, groupOptions.getLimit()); } if (groupOptions.getOffset() != null && groupOptions.getOffset() >= 0) { solrQuery.set(GroupParams.GROUP_OFFSET, groupOptions.getOffset()); } solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, groupOptions.isTotalCount()); solrQuery.set(GroupParams.GROUP_FACET, groupOptions.isGroupFacets()); solrQuery.set(GroupParams.GROUP_TRUNCATE, groupOptions.isTruncateFacets()); }
From source file:org.springframework.data.solr.core.ResultHelper.java
static <T> Map<Object, GroupResult<T>> convertGroupQueryResponseToGroupResultMap(Query query, Map<String, Object> objectNames, QueryResponse response, SolrTemplate solrTemplate, Class<T> clazz) { GroupResponse groupResponse = response.getGroupResponse(); if (groupResponse == null) { return Collections.emptyMap(); }/* w w w . jav a 2 s. co 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; }