@Override public Iterable<Document> getAllLatest(List<GetRequest> getRequests) throws IOException { Map<String, Collection<String>> collectionIdMap = new HashMap<>(); for (GetRequest getRequest : getRequests) { Optional<String> index = SolrUtilities .getIndex(config.getIndexSupplier(), getRequest.getSensorType(), getRequest.getIndex()); if (index.isPresent()) { Collection<String> ids = collectionIdMap.getOrDefault(index.get(), new HashSet<>()); ids.add(getRequest.getGuid()); collectionIdMap.put(index.get(), ids); } else { LOG.debug("Unable to find index for sensorType {}", getRequest.getSensorType()); } } try { List<Document> documents = new ArrayList<>(); for (String collection : collectionIdMap.keySet()) { SolrDocumentList solrDocumentList = client.getById(collectionIdMap.get(collection), new SolrQuery().set("collection", collection)); documents.addAll( solrDocumentList.stream().map(SolrUtilities::toDocument).collect(Collectors.toList())); } return documents; } catch (SolrServerException e) { throw new IOException(e); } } }
protected SearchResponse buildSearchResponse( SearchRequest searchRequest, QueryResponse solrResponse) { SearchResponse searchResponse = new SearchResponse(); SolrDocumentList solrDocumentList = solrResponse.getResults(); searchResponse.setTotal(solrDocumentList.getNumFound()); // search hits --> search results List<SearchResult> results = solrDocumentList.stream() .map(solrDocument -> SolrUtilities.getSearchResult(solrDocument, searchRequest.getFields(), accessConfig.getIndexSupplier())) .collect(Collectors.toList()); searchResponse.setResults(results); // handle facet fields List<String> facetFields = searchRequest.getFacetFields(); if (facetFields != null) { searchResponse.setFacetCounts(getFacetCounts(facetFields, solrResponse)); } if (LOG.isDebugEnabled()) { String response; try { response = JSONUtils.INSTANCE.toJSON(searchResponse, false); } catch (JsonProcessingException e) { response = e.getMessage(); } LOG.debug("Built search response; response={}", response); } return searchResponse; }
QueryResponse rsp = solrClient.query(METAALERTS_COLLECTION, solrQuery); String nextCursorMark = rsp.getNextCursorMark(); rsp.getResults().stream() .map(solrDocument -> SolrUtilities.getSearchResult(solrDocument, null, solrSearchDao.getAccessConfig().getIndexSupplier()))
@Override public List<Header> list() { SolrDocumentList list = getResponse().getResults(); return list.stream().map(toHeader).collect(Collectors.toList()); }
@Override public void init(String configPrefix, String setId, Map<String, MCRSet> setMap, Collection<SolrDocument> result, Function<SolrDocument, String> identifier) { super.init(configPrefix, setId, setMap, result, identifier); if (result.isEmpty()) { idsInSet = Collections.emptySet(); return; } SolrClient solrClient = MCRSolrClientFactory.getMainSolrClient(); QueryResponse response; try { response = solrClient.query(getQuery()); } catch (SolrServerException | IOException e) { throw new MCRException("Error while getting set membership.", e); } idsInSet = response.getResults().stream().map(getIdentifier()).collect(Collectors.toSet()); }
@Override public List<MCRObjectID> get(int from, int count) throws SwordServerException { final SolrQuery queryCopy = this.solrQuery.getCopy(); queryCopy.setStart(from); queryCopy.setRows(count); try { final QueryResponse queryResponse = MCRSolrClientFactory.getMainSolrClient().query(queryCopy); return queryResponse.getResults().stream() .map(r -> (String) r.getFieldValue("id")) .map(MCRObjectID::getInstance) .collect(Collectors.toList()); } catch (SolrServerException | IOException e) { throw new SwordServerException("Error while getting id list with MCRSword2SolrObjectIDSupplier and Query: " + this.solrQuery, e); } } }
private void searchDocumentsToRelease(Consumer<MCRObjectID> objectReleaser) { if(MCRConfiguration2.getString("MCR.Solr.ServerURL").isPresent()){ final SolrClient solrClient = MCRSolrClientFactory.getMainSolrClient(); final ModifiableSolrParams params = new ModifiableSolrParams(); final LocalDate today = LocalDate.now(); final String todayString = today.format(DateTimeFormatter.ISO_DATE); params.set("start", 0); params.set("rows", Integer.MAX_VALUE - 1); params.set("fl", "id"); params.set("q", "mods.embargo.date:[* TO " + todayString + "]"); try { final QueryResponse response = solrClient.query(params); Set<MCRFixedUserCallable<Boolean>> releaseCallables = response.getResults().stream() .map(result -> (String) result.get("id")) .map(MCRObjectID::getInstance) .map(id -> new MCRFixedUserCallable<>(() -> { objectReleaser.accept(id); return true; }, MCRSystemUserInformation.getSuperUserInstance())).collect(Collectors.toSet()); EXECUTOR_SERVICE.invokeAll(releaseCallables); } catch (SolrServerException | IOException | InterruptedException e) { LOGGER.error("Error while searching embargo documents!", e); } } }
public static List<Document> buildResultList(SolrDocumentList results, Map<String,Integer> childCounts, DocumentFactory factory, String searchContext) { return results.stream().map(result -> {
@Override public DeleteResult execute(Delete delete, DocumentFactory factory) { String query = SolrUtils.Query.buildFilterString(delete.getQuery(), factory, delete.getUpdateContext(),true); try { solrClientLogger.debug(">>> delete query({})", query); //Finding the ID of the documents to delete final SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam(CommonParams.Q, "*:*"); solrQuery.setParam(CommonParams.FQ,query.trim().replaceAll("^\\+","").split("\\+")); final QueryResponse response = solrClient.query(solrQuery, REQUEST_METHOD); long qTime = 0; long elapsedTime = 0; if(Objects.nonNull(response) && CollectionUtils.isNotEmpty(response.getResults())){ final List<String> idList = response.getResults().stream().map(doc -> (String) doc.get(ID)).collect(Collectors.toList()); final UpdateResponse deleteResponse = solrClient.deleteById(idList); qTime = deleteResponse.getQTime(); elapsedTime = deleteResponse.getElapsedTime(); //Deleting nested documents final UpdateResponse deleteNestedResponse = solrClient.deleteByQuery("_root_:(" + StringUtils.join(idList, " OR ") + ")"); qTime += deleteNestedResponse.getQTime(); elapsedTime += deleteNestedResponse.getElapsedTime(); } return new DeleteResult(qTime).setElapsedTime(elapsedTime); } catch (SolrServerException | IOException e) { log.error("Cannot delete with query {}", query, e); throw new SearchServerException("Cannot delete with query", e); } }
finalDoc.getFieldValue(SolrUtils.Fieldname.ID), query.getResults().size()); final List<SolrInputDocument> childDocs = query.getResults().stream() .map(nestedDoc -> SolrUtils.toSolrInputDocument(nestedDoc)) .collect(Collectors.toList());