private void calculateNewRangeBasedOnSearchIndex(Context context, List<String> filterQueries, DSpaceObject scope, SearchService searchService) throws SearchServiceException { DiscoverQuery yearRangeQuery = new DiscoverQuery(); yearRangeQuery.setMaxResults(1); //Set our query to anything that has this value yearRangeQuery.addFieldPresentQueries(dateFacet); //Set sorting so our last value will appear on top yearRangeQuery.setSortField(dateFacet + "_sort", DiscoverQuery.SORT_ORDER.asc); yearRangeQuery.addFilterQueries(filterQueries.toArray(new String[filterQueries.size()])); yearRangeQuery.addSearchField(dateFacet); DiscoverResult lastYearResult = searchService.search(context, scope, yearRangeQuery); if (0 < lastYearResult.getDspaceObjects().size()) { List<DiscoverResult.SearchDocument> searchDocuments = lastYearResult .getSearchDocument(lastYearResult.getDspaceObjects().get(0)); if (0 < searchDocuments.size() && 0 < searchDocuments.get(0).getSearchFieldValues(dateFacet).size()) { oldestYear = Integer.parseInt(searchDocuments.get(0).getSearchFieldValues(dateFacet).get(0)); } } //Now get the first year yearRangeQuery.setSortField(dateFacet + "_sort", DiscoverQuery.SORT_ORDER.desc); DiscoverResult firstYearResult = searchService.search(context, scope, yearRangeQuery); if (0 < firstYearResult.getDspaceObjects().size()) { List<DiscoverResult.SearchDocument> searchDocuments = firstYearResult .getSearchDocument(firstYearResult.getDspaceObjects().get(0)); if (0 < searchDocuments.size() && 0 < searchDocuments.get(0).getSearchFieldValues(dateFacet).size()) { newestYear = Integer.parseInt(searchDocuments.get(0).getSearchFieldValues(dateFacet).get(0)); } } }
@Override public String calculateExtremeValue(Context context, String valueField, String sortField, DiscoverQuery.SORT_ORDER sortOrder) throws SearchServiceException { DiscoverQuery maxQuery = new DiscoverQuery(); maxQuery.setMaxResults(1); //Set our query to anything that has this value maxQuery.addFieldPresentQueries(valueField); //Set sorting so our last value will appear on top maxQuery.setSortField(sortField, sortOrder); maxQuery.addSearchField(valueField); DiscoverResult maxResult = this.search(context,maxQuery); if (0 < maxResult.getDspaceObjects().size()) { List<DiscoverResult.SearchDocument> searchDocuments = maxResult .getSearchDocument(maxResult.getDspaceObjects().get(0)); if (0 < searchDocuments.size() && 0 < searchDocuments.get(0).getSearchFieldValues (valueField).size()) { return searchDocuments.get(0).getSearchFieldValues(valueField).get(0); } } return null; } }
/** * Retrieves the lowest date value in the given field * @param query a solr query * @param dateField the field for which we want to retrieve our date * @param filterquery the filterqueries * @return the lowest date found, in a date object */ private Date getLowestDateValue(Context context, String query, String dateField, String... filterquery){ try { DiscoverQuery discoverQuery = new DiscoverQuery(); discoverQuery.setQuery(query); discoverQuery.setMaxResults(1); discoverQuery.setSortField(dateField, DiscoverQuery.SORT_ORDER.asc); discoverQuery.addFilterQueries(filterquery); DiscoverResult rsp = searchService.search(context, discoverQuery); // if(0 < rsp.getResults().getNumFound()){ // return (Date) rsp.getResults().get(0).getFieldValue(dateField); // } }catch (Exception e){ log.error("Unable to get lowest date", e); } return null; }
yearRangeQuery.setSortField(dateFacet + "_sort", DiscoverQuery.SORT_ORDER.asc); yearRangeQuery.addFilterQueries(filterQueries); yearRangeQuery.addSearchField(dateFacet); yearRangeQuery.setSortField(dateFacet + "_sort", DiscoverQuery.SORT_ORDER.desc); DiscoverResult firstYearResult = getSearchService().search(context, scope, yearRangeQuery); if( 0 < firstYearResult.getDspaceObjects().size()){
queryArgs.setSortField(sortBy, DiscoverQuery.SORT_ORDER.desc); queryArgs.setSortField(sortBy, DiscoverQuery.SORT_ORDER.asc); queryArgs.setSortField("dc.type", DiscoverQuery.SORT_ORDER.asc);
String sortField = SearchUtils.getSearchService().toSortFieldIndex(recentSubmissionConfiguration.getMetadataSortField(), recentSubmissionConfiguration.getType()); if(sortField != null){ queryArgs.setSortField( sortField, DiscoverQuery.SORT_ORDER.desc
queryArgs.setSortField( ConfigurationManager.getProperty("recent.submissions.sort-option"), DiscoverQuery.SORT_ORDER.asc
discoverQuery.setSortField("search.resourceid", DiscoverQuery.SORT_ORDER.asc);
query.setSortField("bi_" + orderField + "_sort", ascending ? SORT_ORDER.asc : SORT_ORDER.desc);