//WHOLE_BUNCHES is a constant representing a reasonable max number of docs we want to pull here. //Integer.MAX_VALUE would probably invite an OutOfMemoryError, but that would be true of the //implementation in the question anyway, since they were still being stored in the list at the end. query.setRows(WHOLE_BUNCHES); QueryResponse response = solr.query(query); int totalResults = (int) response.getResults().getNumFound(); //If you even still need this figure. List<Article> ret = response.getBeans(Article.class);
@Override public List<OrgDisambiguatedSolrDocument> getOrgs(String searchTerm, int firstResult, int maxResult, boolean fundersOnly, boolean promoteChosenOrgs) { StringBuilder queryString = new StringBuilder("{!edismax qf='org-disambiguated-name^50.0 text^1.0' pf='org-disambiguated-name^50.0' mm=1 "); queryString.append("sort='"); if (promoteChosenOrgs) { queryString.append(SolrConstants.ORG_CHOSEN_BY_MEMBER).append(" desc, "); } queryString.append("score desc, "); queryString.append("org-disambiguated-popularity desc'}"); queryString.append(searchTerm).append("*"); if (fundersOnly) { queryString.append(" AND is-funding-org:true"); } SolrQuery query = new SolrQuery(); query.setQuery(queryString.toString()); query.addFilterQuery(String.format("(%s:(%s OR %s OR %s)) OR (%s:%s AND %s:%s)", SolrConstants.ORG_DISAMBIGUATED_ID_SOURCE_TYPE, "GRID", "RINGGOLD", "FUNDREF", SolrConstants.ORG_DISAMBIGUATED_ID_SOURCE_TYPE, "LEI", SolrConstants.ORG_CHOSEN_BY_MEMBER, true)); query.setFields("*"); try { QueryResponse queryResponse = solrServerReadOnly.query(query); return queryResponse.getBeans(OrgDisambiguatedSolrDocument.class); } catch (SolrServerException se) { String errorMessage = MessageFormat.format("Error when attempting to search for orgs, with search term {0}", new Object[] { searchTerm }); throw new NonTransientDataAccessResourceException(errorMessage, se); } }
private List<ArtifactVersionBean> getArtifactVersions(String groupId, String artifactId, int offset, int maxRows) throws ServiceException { if (!StringUtils.hasText(groupId) || ! StringUtils.hasText(artifactId)) { return Lists.newArrayListWithCapacity(0); } BooleanQuery bq = new BooleanQuery(); bq.add(new TermQuery(new Term(MavenCentralSearchApiConstants.GROUP_FIELD, groupId)), Occur.MUST); bq.add(new TermQuery(new Term(MavenCentralSearchApiConstants.ARTIFACT_FIELD, artifactId)), Occur.MUST); SolrQuery solrQuery = new SolrQuery(LuceneUtils.queryToString(bq)); solrQuery.set(CoreAdminParams.CORE, MavenCentralSearchApiConstants.CORE_GAV); QueryResponse response = query(solrQuery, offset, maxRows); return response.getBeans(ArtifactVersionBean.class); }
@Override public List<ArtifactBean> getArtifacts(String global, String groupId, String artifactId, int offset, int maxRows) throws ServiceException { String query = getSearchArtifactsQuery(global, groupId, artifactId); if (!StringUtils.hasText(query)) { return Lists.newArrayList(); } SolrQuery solrQuery = new SolrQuery(query); QueryResponse response = query(solrQuery, offset, maxRows); return response.getBeans(ArtifactBean.class); }
@Override public List<OrgDisambiguatedSolrDocument> getOrgsForSelfService(String searchTerm, int firstResult, int maxResult) { SolrQuery query = new SolrQuery(); query.setQuery("{!edismax qf='org-disambiguated-id-from-source^50.0 org-disambiguated-name^50.0 org-names^1.0' pf='org-disambiguated-name^50.0' mm=1 sort='score desc, org-disambiguated-popularity desc'}" + searchTerm + "*").setFields("*"); try { QueryResponse queryResponse = solrServerReadOnly.query(query); return queryResponse.getBeans(OrgDisambiguatedSolrDocument.class); } catch (SolrServerException se) { String errorMessage = MessageFormat.format("Error when attempting to search for orgs for self-service, with search term {0}", new Object[] { searchTerm }); throw new NonTransientDataAccessResourceException(errorMessage, se); } }
@Override public List<OrgDefinedFundingTypeSolrDocument> getFundingTypes(String searchTerm, int firstResult, int maxResult) { SolrQuery query = new SolrQuery(); query.setQuery( "{!edismax qf='org-defined-funding-type^50.0 text^1.0' pf='org-defined-funding-type^50.0' mm=1 sort='score desc'}" + searchTerm + "*").setFields("*"); try { QueryResponse queryResponse = solrServerReadOnly.query(query); return queryResponse.getBeans(OrgDefinedFundingTypeSolrDocument.class); } catch (SolrServerException se) { String errorMessage = MessageFormat.format("Error when attempting to search for orgs, with search term {0}", new Object[] { searchTerm }); throw new NonTransientDataAccessResourceException(errorMessage, se); } }
@Override public OrgDisambiguatedSolrDocument findById(Long id) { SolrQuery query = new SolrQuery(); query.setQuery(ORG_DISAMBIGUATED_ID + ":" + id).setFields("*"); try { QueryResponse queryResponse = solrServerReadOnly.query(query); if (!queryResponse.getResults().isEmpty()) { OrgDisambiguatedSolrDocument document = queryResponse.getBeans(OrgDisambiguatedSolrDocument.class).get(0); return document; } } catch (SolrServerException se) { String errorMessage = MessageFormat.format("Error when attempting to retrieve org {0}", new Object[] { id }); throw new NonTransientDataAccessResourceException(errorMessage, se); } return null; }
QueryResponse response = query(solrQuery, 0, partialArtifactList.size()); validArtifacts.addAll(response.getBeans(ArtifactBean.class));
solrIterator = solrResponse.getBeans(VariantSearchModel.class).iterator(); return solrIterator.hasNext(); } catch (SolrServerException | IOException e) {
docs = new ArrayList<>(); } else { docs = response.getBeans(Document.class); total = response.getResults().getNumFound();
@Override public ResultsList<Document> searchByEfoUri(int start, int rows, String term, String... uris) throws SearchEngineException { ResultsList<Document> results; try { SolrQuery query = new SolrQuery(term + " OR " + EFO_URI_FIELD + ":" + buildUriFilter(uris)); // query.addFilterQuery(EFO_URI_FIELD + ":" + buildUriFilter(uris)); query.setStart(start); query.setRows(rows); query.setRequestHandler(config.getDocumentUriRequestHandler()); LOGGER.debug("Solr query: {}", query); QueryResponse response = server.query(query); List<Document> docs = response.getBeans(Document.class); results = new ResultsList<>(docs, start, (start / rows), response.getResults().getNumFound()); } catch (SolrServerException | IOException e) { throw new SearchEngineException(e); } return results; }