List of usage examples for org.apache.solr.client.solrj SolrQuery setStart
public SolrQuery setStart(Integer start)
From source file:org.mousephenotype.cda.solr.SolrUtils.java
License:Apache License
/** * Fetch a map of image terms indexed by ma id * * @param imagesCore a valid solr connection * @return a map, indexed by child ma id, of all parent terms with * associations//from w w w . ja v a 2s. c o m * @throws SolrServerException, IOException */ public static Map<String, List<SangerImageDTO>> populateSangerImagesMap(SolrClient imagesCore) throws SolrServerException, IOException { Map<String, List<SangerImageDTO>> map = new HashMap(); int pos = 0; long total = Integer.MAX_VALUE; SolrQuery query = new SolrQuery(SangerImageDTO.MA_ID + ":*"); query.setRows(BATCH_SIZE); while (pos < total) { query.setStart(pos); QueryResponse response = null; response = imagesCore.query(query); total = response.getResults().getNumFound(); List<SangerImageDTO> imageList = response.getBeans(SangerImageDTO.class); for (SangerImageDTO image : imageList) { for (String termId : image.getMaId()) { if (!map.containsKey(termId)) { map.put(termId, new ArrayList<SangerImageDTO>()); } String imageId = image.getId(); List<SangerImageDTO> sangerImageList = map.get(termId); boolean imageFound = false; for (SangerImageDTO dto : sangerImageList) { if (dto.getId().equalsIgnoreCase(imageId)) { imageFound = true; break; } } // Don't add duplicate images. if (!imageFound) { map.get(termId).add(image); } } } pos += BATCH_SIZE; } return map; }
From source file:org.mousephenotype.cda.solr.SolrUtils.java
License:Apache License
/** * Fetch a map of image terms indexed by ma id * * @param imagesCore a valid solr connection * @return a map, indexed by child ma id, of all parent terms with * associations/* w w w . j a v a2 s .co m*/ * @throws SolrServerException, IOException */ public static Map<String, List<SangerImageDTO>> populateSangerImagesByMgiAccession(SolrClient imagesCore) throws SolrServerException, IOException { Map<String, List<SangerImageDTO>> map = new HashMap(); int pos = 0; long total = Integer.MAX_VALUE; SolrQuery query = new SolrQuery("mgi_accession_id:*"); query.setRows(BATCH_SIZE); while (pos < total) { query.setStart(pos); QueryResponse response = null; response = imagesCore.query(query); total = response.getResults().getNumFound(); List<SangerImageDTO> imageList = response.getBeans(SangerImageDTO.class); for (SangerImageDTO image : imageList) { if (!map.containsKey(image.getAccession())) { map.put(image.getAccession(), new ArrayList<SangerImageDTO>()); } String imageId = image.getId(); List<SangerImageDTO> sangerImageList = map.get(image.getAccession()); boolean imageFound = false; for (SangerImageDTO dto : sangerImageList) { if (dto.getId().equalsIgnoreCase(imageId)) { imageFound = true; break; } } // Don't add duplicate images. if (!imageFound) { map.get(image.getAccession()).add(image); } } pos += BATCH_SIZE; } return map; }
From source file:org.mousephenotype.cda.solr.SolrUtils.java
License:Apache License
/** * Fetch a map of mgi accessions to alleles * * @param alleleCore a valid solr connection * @return a map, indexed by MGI Accession id, of all alleles * * @throws SolrServerException, IOException *//*from w w w .jav a 2s . c o m*/ public static Map<String, List<AlleleDTO>> populateAllelesMap(SolrClient alleleCore) throws SolrServerException, IOException { Map<String, List<AlleleDTO>> alleles = new HashMap<>(); int pos = 0; long total = Integer.MAX_VALUE; SolrQuery query = new SolrQuery("*:*"); query.setRows(BATCH_SIZE); while (pos < total) { query.setStart(pos); QueryResponse response = null; response = alleleCore.query(query); total = response.getResults().getNumFound(); List<AlleleDTO> alleleList = response.getBeans(AlleleDTO.class); for (AlleleDTO allele : alleleList) { String key = allele.getMgiAccessionId(); if (!alleles.containsKey(key)) { alleles.put(key, new ArrayList<>()); } alleles.get(key).add(allele); } pos += BATCH_SIZE; } logger.debug(" Loaded {} alleles", alleles.size()); return alleles; }
From source file:org.mousephenotype.cda.solr.SolrUtils.java
License:Apache License
/** * Fetch a map of mp terms associated to hp terms, indexed by mp id. * * @param phenodigm_core a valid solr connection * @return a map, indexed by mp id, of all hp terms * * @throws SolrServerException, IOException *//*from w w w . j a v a2s . c o m*/ public static Map<String, List<Map<String, String>>> populateMpToHpTermsMap(SolrClient phenodigm_core) throws SolrServerException, IOException { // url="q=mp_id:"${nodeIds.term_id}"&rows=999&fq=type:mp_hp&fl=hp_id,hp_term" // processor="XPathEntityProcessor" > // // <field column="hp_id" xpath="/response/result/doc/str[@name='hp_id']" // /> // <field column="hp_term" // xpath="/response/result/doc/str[@name='hp_term']" /> Map<String, List<Map<String, String>>> mpToHp = new HashMap<>(); int pos = 0; long total = Integer.MAX_VALUE; SolrQuery query = new SolrQuery("mp_id:*"); query.addFilterQuery("type:mp_hp");// &fl=hp_id,hp_term); query.add("fl=hp_id,hp_term"); query.setRows(BATCH_SIZE); while (pos < total) { query.setStart(pos); QueryResponse response = null; response = phenodigm_core.query(query); total = response.getResults().getNumFound(); SolrDocumentList solrDocs = response.getResults(); for (SolrDocument doc : solrDocs) { if (doc.containsKey("hp_id")) { String hp = (String) doc.get("hp_id"); if (doc.containsKey("mp_id")) { String mp = (String) doc.get("mp_id"); List<Map<String, String>> mapList = new ArrayList<>(); Map<String, String> entryMap = new HashMap<>(); if (mpToHp.containsKey(mp)) { mapList = mpToHp.get(mp); } entryMap.put("hp_id", hp); if (doc.containsKey("hp_term")) { String hpTerm = (String) doc.get("hp_term"); entryMap.put("hp_term", hpTerm); } mapList.add(entryMap); mpToHp.put(mp, mapList); } } } pos += BATCH_SIZE; } return mpToHp; }
From source file:org.mousephenotype.cda.solr.SolrUtils.java
License:Apache License
/** * Get a map of MpDTOs by key mgiAccesion * * @param mpSolrServer/*from ww w .ja v a 2s . c o m*/ * @return the map * @throws SolrServerException, IOException */ public static Map<String, List<MpDTO>> populateMgiAccessionToMp(SolrClient mpSolrServer) throws SolrServerException, IOException { Map<String, List<MpDTO>> mps = new HashMap<>(); int pos = 0; long total = Integer.MAX_VALUE; SolrQuery query = new SolrQuery("mgi_accession_id:*"); //query.add("fl=mp_id,mp_term,mp_definition,mp_term_synonym,ontology_subset,hp_id,hp_term,top_level_mp_id,top_level_mp_term,top_level_mp_term_synonym,intermediate_mp_id,intermediate_mp_term,intermediate_mp_term_synonym,child_mp_id,child_mp_term,child_mp_term_synonym,inferred_ma_id,inferred_ma_term,inferred_ma_term_synonym,inferred_selected_top_level_ma_id,inferred_selected_top_level_ma_term,inferred_selected_top_level_ma_term_synonym,inferred_child_ma_id,inferred_child_ma_term,inferred_child_ma_term_synonym"); query.setRows(BATCH_SIZE); while (pos < total) { query.setStart(pos); QueryResponse response = null; response = mpSolrServer.query(query); total = response.getResults().getNumFound(); List<MpDTO> mpBeans = response.getBeans(MpDTO.class); for (MpDTO mp : mpBeans) { if (mp.getMgiAccessionId() != null && !mp.getMgiAccessionId().equals("")) { for (String geneAccession : mp.getMgiAccessionId()) { if (mps.containsKey(geneAccession)) { mps.get(geneAccession).add(mp); } else { List<MpDTO> mpListPerGene = new ArrayList<>(); mpListPerGene.add(mp); mps.put(geneAccession, mpListPerGene); } } } } pos += BATCH_SIZE; } return mps; }
From source file:org.obm.service.calendar.ContactService.java
License:Open Source License
public Set<Integer> searchContactIds(AccessToken token, String query, Collection<AddressBook> addrBooks, Integer limit, Integer offset) throws LocatorClientException { Set<Integer> contactIds = new HashSet<Integer>(); if (addrBooks.size() > 0) { SolrHelper solrHelper = solrHelperFactory.createClient(token); CommonsHttpSolrServer solrServer = solrHelper.getSolrContact(); StringBuilder sb = new StringBuilder(); sb.append("-is:archive "); sb.append("+addressbookId:("); int idx = 0; for (AddressBook book : addrBooks) { if (idx > 0) { sb.append(" OR "); }/* w ww .j av a 2s. c o m*/ sb.append(book.getUid()); idx++; } sb.append(")"); if (query != null && !"".equals(query)) { sb.append(" +(displayname:("); sb.append(query.toLowerCase()); sb.append("*) OR firstname:("); sb.append(query.toLowerCase()); sb.append("*) OR lastname:("); sb.append(query.toLowerCase()); sb.append("*) OR email:("); sb.append(query.toLowerCase()); sb.append("*))"); } SolrQuery params = new SolrQuery(); params.setQuery(sb.toString()); params.setIncludeScore(true); params.setRows(limit); params.setStart(offset); try { QueryResponse resp = solrServer.query(params); SolrDocumentList results = resp.getResults(); if (logger.isDebugEnabled()) { logger.debug( "SOLR query time for " + results.size() + " results: " + resp.getElapsedTime() + "ms."); } for (int i = 0; i < limit && i < results.size(); i++) { SolrDocument doc = results.get(i); Map<String, Object> payload = doc.getFieldValueMap(); contactIds.add((Integer) payload.get("id")); } } catch (SolrServerException e) { logger.error("Error querying server for '" + sb.toString() + " url: " + ClientUtils.toQueryString(params, false), e); } } return contactIds; }
From source file:org.ofbiz.solr.SolrProductSearch.java
License:Apache License
/** * Runs a query on the Solr Search Engine and returns the results. * <p>//from w ww . j a v a 2s. co m * This function only returns an object of type QueryResponse, so it is probably not a good idea to call it directly from within the * groovy files (As a decent example on how to use it, however, use keywordSearch instead). */ public static Map<String, Object> runSolrQuery(DispatchContext dctx, Map<String, Object> context) { // get Connection HttpSolrServer server = null; Map<String, Object> result; Integer viewIndex = (Integer) context.get("viewIndex"); Integer viewSize = (Integer) context.get("viewSize"); if (viewIndex < 1) { viewIndex = 1; } try { server = new HttpSolrServer(SolrUtil.solrUrl); // create Query Object SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery((String) context.get("query")); // solrQuery.setQueryType("dismax"); boolean faceted = (Boolean) context.get("facet"); if (faceted) { solrQuery.setFacet(faceted); //solrQuery.addFacetField("manu"); solrQuery.addFacetField("features"); solrQuery.addFacetField("cat"); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(8); solrQuery.addFacetQuery("listPrice:[0 TO 50]"); solrQuery.addFacetQuery("listPrice:[50 TO 100]"); solrQuery.addFacetQuery("listPrice:[100 TO 250]"); solrQuery.addFacetQuery("listPrice:[250 TO 500]"); solrQuery.addFacetQuery("listPrice:[500 TO 1000]"); solrQuery.addFacetQuery("listPrice:[1000 TO 2500]"); solrQuery.addFacetQuery("listPrice:[2500 TO 5000]"); solrQuery.addFacetQuery("listPrice:[5000 TO 10000]"); solrQuery.addFacetQuery("listPrice:[10000 TO 50000]"); solrQuery.addFacetQuery("listPrice:[50000 TO *]"); } boolean spellCheck = (Boolean) context.get("spellcheck"); if (spellCheck) { solrQuery.setParam("spellcheck", spellCheck); } boolean highLight = (Boolean) context.get("highlight"); if (highLight) { solrQuery.setHighlight(highLight); solrQuery.setHighlightSimplePre("<span class=\"highlight\">"); solrQuery.addHighlightField("description"); solrQuery.setHighlightSimplePost("</span>"); solrQuery.setHighlightSnippets(2); } // Set additional Parameter // SolrQuery.ORDER order = SolrQuery.ORDER.desc; if (viewIndex != null && viewIndex > 0) { solrQuery.setStart((viewIndex - 1) * viewSize); } if (viewSize != null && viewSize > 0) { solrQuery.setRows(viewSize); } // if ((List) context.get("queryFilter") != null && ((ArrayList<SolrDocument>) context.get("queryFilter")).size() > 0) { // List filter = (List) context.get("queryFilter"); // String[] tn = new String[filter.size()]; // Iterator it = filter.iterator(); // for (int i = 0; i < filter.size(); i++) { // tn[i] = (String) filter.get(i); // } // solrQuery.setFilterQueries(tn); // } String queryFilter = (String) context.get("queryFilter"); if (UtilValidate.isNotEmpty(queryFilter)) solrQuery.setFilterQueries(queryFilter.split(" ")); if ((String) context.get("returnFields") != null) { solrQuery.setFields((String) context.get("returnFields")); } // if((Boolean)context.get("sortByReverse"))order.reverse(); if ((String) context.get("sortBy") != null && ((String) context.get("sortBy")).length() > 0) { SolrQuery.ORDER order; if (!((Boolean) context.get("sortByReverse"))) order = SolrQuery.ORDER.asc; else order = SolrQuery.ORDER.desc; solrQuery.setSort(((String) context.get("sortBy")).replaceFirst("-", ""), order); } if ((String) context.get("facetQuery") != null) { solrQuery.addFacetQuery((String) context.get("facetQuery")); } QueryResponse rsp = server.query(solrQuery); result = ServiceUtil.returnSuccess(); result.put("queryResult", rsp); } catch (Exception e) { Debug.logError(e, e.getMessage(), module); result = ServiceUtil.returnError(e.toString()); } return result; }
From source file:org.ofbiz.solr.SolrUtil.java
License:Apache License
public static Map<String, Object> categoriesAvailable(String catalogId, String categoryId, String productId, String facetPrefix, boolean displayproducts, int viewIndex, int viewSize) { // create the data model Map<String, Object> result = FastMap.newInstance(); HttpSolrServer server = null;//from w w w. j a v a 2 s. c o m QueryResponse returnMap = new QueryResponse(); try { // do the basic query server = new HttpSolrServer(solrUrl); // create Query Object String query = "inStock[1 TO *]"; if (categoryId != null) query += " +cat:" + categoryId; else if (productId != null) query += " +productId:" + productId; SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); if (catalogId != null) solrQuery.setFilterQueries("catalog:" + catalogId); if (displayproducts) { if (viewSize > -1) { solrQuery.setRows(viewSize); } else solrQuery.setRows(50000); if (viewIndex > -1) { solrQuery.setStart(viewIndex); } } else { solrQuery.setFields("cat"); solrQuery.setRows(0); } if (UtilValidate.isNotEmpty(facetPrefix)) { solrQuery.setFacetPrefix(facetPrefix); } solrQuery.setFacetMinCount(0); solrQuery.setFacet(true); solrQuery.addFacetField("cat"); solrQuery.setFacetLimit(-1); Debug.logVerbose("solr: solrQuery: " + solrQuery, module); returnMap = server.query(solrQuery, METHOD.POST); result.put("rows", returnMap); result.put("numFound", returnMap.getResults().getNumFound()); } catch (Exception e) { Debug.logError(e.getMessage(), module); } return result; }
From source file:org.opencastproject.archive.opencast.solr.SolrRequester.java
License:Educational Community License
/** Converts the query object into a solr query. */ // todo rewrite using solr DSL private SolrQuery createQuery(OpencastQuery q) throws SolrServerException { final StringBuilder sb = new StringBuilder(); append(sb, Schema.DC_ID, q.getMediaPackageId()); // full text query with boost for (String solrTextRequest : q.getFullText()) { if (sb.length() > 0) sb.append(" AND "); sb.append("(").append(createBoostedFullTextQuery(solrTextRequest)).append(")"); }/* w ww . ja v a 2 s. co m*/ appendFuzzy(sb, Schema.DC_CREATOR_SUM, q.getDcCreator()); appendFuzzy(sb, Schema.DC_CONTRIBUTOR_SUM, q.getDcContributor()); append(sb, Schema.DC_LANGUAGE, q.getDcLanguage()); appendFuzzy(sb, Schema.DC_LICENSE_SUM, q.getDcLicense()); appendFuzzy(sb, Schema.DC_TITLE_SUM, q.getDcTitle()); appendFuzzy(sb, Schema.S_DC_TITLE_SUM, q.getSeriesTitle()); append(sb, Schema.DC_IS_PART_OF, q.getSeriesId()); append(sb, Schema.OC_ORGANIZATION, q.getOrganizationId()); if (q.getDeletedAfter().isSome() || q.getDeletedBefore().isSome()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_DELETED).append(":true AND ").append(Schema.OC_TIMESTAMP).append(":") .append(SolrUtils.serializeDateRange(q.getDeletedAfter(), q.getDeletedBefore())); } if (!q.isIncludeDeleted()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_DELETED + ":false"); } if (q.isOnlyLastVersion()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_LATEST_VERSION + ":true"); } if (q.getArchivedAfter().isSome() || q.getArchivedBefore().isSome()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_TIMESTAMP).append(":") .append(SolrUtils.serializeDateRange(q.getArchivedAfter(), q.getArchivedBefore())); } if (sb.length() == 0) sb.append("*:*"); final SolrQuery solr = new SolrQuery(sb.toString()); // limit & offset solr.setRows(q.getLimit().getOrElse(Integer.MAX_VALUE)); solr.setStart(q.getOffset().getOrElse(0)); // ordering for (OpencastQuery.Order o : q.getOrder()) { final SolrQuery.ORDER order = q.isOrderAscending() ? SolrQuery.ORDER.asc : SolrQuery.ORDER.desc; solr.addSortField(getSortField(o), order); } solr.setFields("* score"); return solr; }
From source file:org.opencastproject.episode.impl.solr.SolrRequester.java
License:Educational Community License
/** * Converts the query object into a solr query and returns the results. * /* w ww . ja va2 s.c o m*/ * @param q * the query * @return the search results */ private SolrQuery createQuery(EpisodeQuery q) throws SolrServerException { final StringBuilder sb = new StringBuilder(); for (String solrQueryRequest : q.getQuery()) sb.append(solrQueryRequest); append(sb, Schema.DC_ID, q.getId()); // full text query with boost for (String solrTextRequest : q.getText()) { if (sb.length() > 0) sb.append(" AND "); sb.append("(").append(createBoostedFullTextQuery(solrTextRequest)).append(")"); } appendFuzzy(sb, Schema.DC_CREATOR_SUM, q.getCreator()); appendFuzzy(sb, Schema.DC_CONTRIBUTOR_SUM, q.getContributor()); append(sb, Schema.DC_LANGUAGE, q.getLanguage()); appendFuzzy(sb, Schema.DC_LICENSE_SUM, q.getLicense()); appendFuzzy(sb, Schema.DC_TITLE_SUM, q.getTitle()); appendFuzzy(sb, Schema.S_DC_TITLE_SUM, q.getSeriesTitle()); append(sb, Schema.DC_IS_PART_OF, q.getSeriesId()); append(sb, Schema.OC_ORGANIZATION, q.getOrganization()); if (q.getElementTags().size() > 0) { if (sb.length() > 0) sb.append(" AND "); StringBuilder tagBuilder = new StringBuilder(); for (String tag : mlist(q.getElementTags()).bind(Options.<String>asList().o(SolrUtils.clean))) { if (tagBuilder.length() == 0) { tagBuilder.append("("); } else { tagBuilder.append(" OR "); } tagBuilder.append(Schema.OC_ELEMENTTAGS); tagBuilder.append(":"); tagBuilder.append(SolrUtils.clean(tag)); } if (tagBuilder.length() > 0) { tagBuilder.append(") "); sb.append(tagBuilder); } } if (q.getElementFlavors().size() > 0) { if (sb.length() > 0) sb.append(" AND "); StringBuilder flavorBuilder = new StringBuilder(); for (String flavor : mlist(q.getElementFlavors()).bind(Options.<String>asList().o(SolrUtils.clean) .o(Strings.<MediaPackageElementFlavor>asStringNull()))) { if (flavorBuilder.length() == 0) { flavorBuilder.append("("); } else { flavorBuilder.append(" OR "); } flavorBuilder.append(Schema.OC_ELEMENTFLAVORS); flavorBuilder.append(":"); flavorBuilder.append(ClientUtils.escapeQueryChars(flavor)); } if (flavorBuilder.length() > 0) { flavorBuilder.append(") "); sb.append(flavorBuilder); } } for (Date deleted : q.getDeletedDate()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_DELETED).append(":") .append(SolrUtils.serializeDateRange(option(deleted), Option.<Date>none())); } if (!q.getIncludeDeleted()) { if (sb.length() > 0) sb.append(" AND "); sb.append("-" + Schema.OC_DELETED + ":[* TO *]"); } if (q.getOnlyLastVersion()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_LATEST_VERSION + ":true"); } // only episodes if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_MEDIATYPE + ":" + SearchResultItem.SearchResultItemType.AudioVisual); // only add date range if at least on criteria is set if (q.getAddedBefore().isSome() || q.getAddedAfter().isSome()) { if (sb.length() > 0) sb.append(" AND "); sb.append(Schema.OC_TIMESTAMP + ":[" + q.getAddedAfter().map(SolrUtils.serializeDate).getOrElse("*") + " TO " + q.getAddedBefore().map(SolrUtils.serializeDate).getOrElse("*") + "]"); } if (sb.length() == 0) sb.append("*:*"); final SolrQuery solr = new SolrQuery(sb.toString()); // limit & offset solr.setRows(q.getLimit()); solr.setStart(q.getOffset()); // sorting final SolrQuery.ORDER order = q.getSortAscending() ? SolrQuery.ORDER.asc : SolrQuery.ORDER.desc; solr.addSortField(getSortField(q.getSort()), order); solr.setFields("* score"); return solr; }