@Override public String doMaxQuery(String column, String table, int itemID) throws BrowseException { DiscoverQuery query = new DiscoverQuery(); query.setQuery("search.resourceid:" + itemID + " AND search.resourcetype:" + Constants.ITEM); query.setMaxResults(1); DiscoverResult resp = null; try { resp = searcher.search(context, query); } catch (SearchServiceException e) { throw new BrowseException(e); } if (resp.getTotalSearchResults() > 0) { SearchDocument doc = resp.getSearchDocument( resp.getDspaceObjects().get(0)).get(0); return (String) doc.getSearchFieldValues(column).get(0); } return null; }
@Override public int doCountQuery() throws BrowseException { DiscoverResult resp = getSolrResponse(); int count = 0; if (distinct) { List<FacetResult> facetResults = resp.getFacetResult(facetField); count = facetResults.size(); } else { // we need to cast to int to respect the BrowseDAO contract... count = (int) resp.getTotalSearchResults(); // FIXME null the response cache // the BrowseEngine send fake argument to the BrowseDAO for the // count... sResponse = null; } return count; }
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)); } } }
protected DiscoverResult retrieveResult(Context context, DiscoverQuery query, QueryResponse solrQueryResponse) throws SQLException { DiscoverResult result = new DiscoverResult(); result.setSearchTime(solrQueryResponse.getQTime()); result.setStart(query.getStart()); result.setMaxResults(query.getMaxResults()); result.setTotalSearchResults(solrQueryResponse.getResults().getNumFound()); result.addDSpaceObject(dso); } else { log.error(LogManager.getHeader(context, "Error while retrieving DSpace object from discovery index", result.addSearchDocument(dso, resultDoc); .addHighlightedResult(dso, new DiscoverResult.DSpaceObjectHighlightResult(dso, resultMap)); result.addFacetResult( field, new DiscoverResult.FacetResult(filterValue, result.addFacetResult(facetField, new DiscoverResult.FacetResult(filter, name, null, name, count, DiscoveryConfigurationParameters String recommendedQuery = solrQueryResponse.getSpellCheckResponse().getCollatedResult(); if (StringUtils.isNotBlank(recommendedQuery)) { result.setSpellCheckQuery(recommendedQuery);
private DiscoverResult retrieveResult(Context context, DiscoverQuery query, QueryResponse solrQueryResponse) throws SQLException { DiscoverResult result = new DiscoverResult(); result.setStart(query.getStart()); result.setMaxResults(query.getMaxResults()); result.setTotalSearchResults(solrQueryResponse.getResults().getNumFound()); result.addDSpaceObject(dso); } else { log.error(LogManager.getHeader(context, "Error while retrieving DSpace object from discovery index", "Handle: " + doc.getFirstValue("handle"))); result.addSearchDocument(dso, resultDoc); String field = transformFacetField(facetFieldConfig, facetField.getName(), true); result.addFacetResult(field, new DiscoverResult.FacetResult(facetValue.getAsFilterQuery(), displayedValue, facetValue.getCount())); result.addFacetResult(facetField, new DiscoverResult.FacetResult(facetQuery, name, count));
if (queryResults != null && 0< queryResults.getDspaceObjects().size()) int itemsTotal = (int) queryResults.getTotalSearchResults(); int firstItemIndex = (int) this.queryResults.getStart() + 1; int lastItemIndex = (int) this.queryResults.getStart() + queryResults.getDspaceObjects().size(); int currentPage = this.queryResults.getStart() / this.queryResults.getMaxResults() + 1; int pagesTotal = (int) ((this.queryResults.getTotalSearchResults() - 1) / this.queryResults.getMaxResults()) + 1; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("page", "{pageNum}"); for (DSpaceObject resultDso : queryResults.getDspaceObjects()) for (DSpaceObject resultDso : queryResults.getDspaceObjects())
List<DSpaceObject> results = this.queryResults.getDspaceObjects(); validity.add("total:"+this.queryResults.getTotalSearchResults()); validity.add("start:"+this.queryResults.getStart()); validity.add("size:" + results.size()); Map<String, List<DiscoverResult.FacetResult>> facetResults = this.queryResults.getFacetResults(); for(String facetField : facetResults.keySet()){ List<DiscoverResult.FacetResult> facetValues = facetResults.get(facetField);
val.add("numFound:" + queryResults.getDspaceObjects().size()); for (DSpaceObject resultDso : queryResults.getDspaceObjects()) { val.add(resultDso); for (String facetField : queryResults.getFacetResults().keySet()) { val.add(facetField); java.util.List<DiscoverResult.FacetResult> facetValues = queryResults.getFacetResults().get(facetField); for (DiscoverResult.FacetResult facetValue : facetValues) { val.add(facetValue.getAsFilterQuery() + facetValue.getCount());
@Override public List<Item> doQuery() throws BrowseException { DiscoverResult resp = getSolrResponse(); List<Item> bitems = new ArrayList<>(); for (DSpaceObject solrDoc : resp.getDspaceObjects()) { // FIXME introduce project, don't retrieve Item immediately when // processing the query... Item item = (Item) solrDoc; bitems.add(item); } return bitems; }
public List<FacetResult> getFacetResult(DiscoverySearchFilterFacet field) { List<DiscoverResult.FacetResult> facetValues = getFacetResult(field.getIndexFieldName()); //Check if we are dealing with a date, sometimes the facet values arrive as dates ! if (facetValues.size() == 0 && field.getType().equals(DiscoveryConfigurationParameters.TYPE_DATE)) { facetValues = getFacetResult(field.getIndexFieldName() + ".year"); } return ListUtils.emptyIfNull(facetValues); }
discoverQuery.addFilterQueries("archived: true"); return (int) SearchUtils.getSearchService().search(context, discoverQuery).getTotalSearchResults();
@Override public DiscoverResult search(Context context, DiscoverQuery discoveryQuery, boolean includeUnDiscoverable) throws SearchServiceException { try { if (getSolr() == null) { return new DiscoverResult(); } SolrQuery solrQuery = resolveToSolrQuery(context, discoveryQuery, includeUnDiscoverable); QueryResponse queryResponse = getSolr().query(solrQuery, SolrRequest.METHOD.POST); return retrieveResult(context, discoveryQuery, queryResponse); } catch (Exception e) { throw new org.dspace.discovery.SearchServiceException(e.getMessage(), e); } }
@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; } }
validity.add("numFound:" + response.getDspaceObjects().size()); for (DSpaceObject resultDso : queryResults.getDspaceObjects()) { validity.add(resultDso); for (String facetField : queryResults.getFacetResults().keySet()) { validity.add(facetField); java.util.List<DiscoverResult.FacetResult> facetValues = queryResults.getFacetResults().get(facetField); for (DiscoverResult.FacetResult facetValue : facetValues) { validity.add(facetValue.getAsFilterQuery() + facetValue.getCount());
if (0 < queryResults.getDspaceObjects().size()) { Division home = body.addDivision("site-home", "primary repository"); null, "recent-submissions"); for (DSpaceObject dso : queryResults.getDspaceObjects()) { if(dso != null){ lastSubmitted.addReference(dso);
@Override public int doDistinctOffsetQuery(String column, String value, boolean isAscending) throws BrowseException { DiscoverResult resp = getSolrResponse(); List<FacetResult> facets = resp.getFacetResult(facetField); Comparator comparator = new SolrBrowseDAO.FacetValueComparator(); Collections.sort(facets, comparator); int x = Collections.binarySearch(facets, value, comparator); int ascValue = (x >= 0) ? x : -(x + 1); if (isAscending) { return ascValue; } else { return doCountQuery() - ascValue; } }
throw new BrowseException(e); return (int) resp.getTotalSearchResults();
if(0 < lastYearResult.getDspaceObjects().size()){ java.util.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)); if( 0 < firstYearResult.getDspaceObjects().size()){ java.util.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));
validity.add("numFound:" + response.getDspaceObjects().size()); for (DSpaceObject resultDso : response.getDspaceObjects()) { validity.add(resultDso); for (String facetField : response.getFacetResults().keySet()) { validity.add(facetField); List<DiscoverResult.FacetResult> facetValues = response.getFacetResults().get(facetField); for (DiscoverResult.FacetResult facetValue : facetValues) { validity.add(facetValue.getAsFilterQuery() + facetValue.getCount());
if (0 < queryResults.getDspaceObjects().size()) { Division lastSubmittedDiv = home .addDivision("community-recent-submission", "secondary recent-submission"); null, "recent-submissions"); for (DSpaceObject resultObject : queryResults.getDspaceObjects()) { if(resultObject != null){ lastSubmitted.addReference(resultObject);