List of usage examples for org.apache.solr.client.solrj SolrQuery setStart
public SolrQuery setStart(Integer start)
From source file:org.kimios.kernel.controller.impl.SolrSearchController.java
License:Open Source License
private SolrQuery parseQueryFromListCriteria(Session session, int page, int pageSize, List<Criteria> criteriaList, String sortField, String sortDir) throws ParseException { SolrQuery indexQuery = new SolrQuery(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); ArrayList<String> aclFilterQueries = new ArrayList<String>(); ArrayList<String> filterQueries = new ArrayList<String>(); ArrayList<String> queries = new ArrayList<String>(); if (!getSecurityAgent().isAdmin(session.getUserName(), session.getUserSource())) { String aclQuery = QueryBuilder.buildAclQuery(session); aclFilterQueries.add(aclQuery);/*from w ww.j a v a 2 s . c om*/ } for (Criteria c : criteriaList) { if (c.getQuery() != null && c.getQuery().trim().length() > 0 || c.getRangeMin() != null || c.getRangeMax() != null) { if (c.getFieldName().equals("DocumentName")) { queries.add(QueryBuilder.documentNameQuery(c.getQuery())); } else if (c.getFieldName().equals("DocumentBody")) { queries.add("DocumentBody:" + ClientUtils.escapeQueryChars(c.getQuery())); } else if (c.getFieldName().equals("DocumentUid")) { filterQueries.add("DocumentUid:" + c.getQuery()); } else if (c.getFieldName().equals("DocumentParent")) { filterQueries.add(QueryBuilder.documentParentQuery(c.getQuery())); } else if (c.getFieldName().equals("DocumentVersionUpdateDate")) { queries.add(QueryBuilder.documentUpdateDateQuery("DocumentVersionUpdateDate", c.getRangeMin(), c.getRangeMax())); } else if (c.getFieldName().equals("DocumentCreationDate")) { queries.add(QueryBuilder.documentUpdateDateQuery("DocumentCreationDate", c.getRangeMin(), c.getRangeMax())); } else if (c.getFieldName().equals("DocumentTypeUid")) { long dtUid = Long.parseLong(c.getQuery()); List<DocumentType> items = dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(dtUid); List<DocumentType> documentTypeList = new ArrayList<DocumentType>(items); for (DocumentType it : items) { documentTypeList.addAll(dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(it.getUid())); } StringBuilder builder = new StringBuilder(); builder.append("DocumentTypeUid:(" + dtUid + (documentTypeList.size() > 0 ? " OR " : "")); int idx = 0; for (DocumentType dtIt : documentTypeList) { builder.append(dtIt.getUid()); idx++; if (idx < documentTypeList.size()) { builder.append(" OR "); } } builder.append(")"); filterQueries.add(builder.toString()); } else if (c.getFieldName().startsWith("MetaData")) { Meta meta = dmsFactoryInstantiator.getMetaFactory().getMeta(c.getMetaId()); if (meta != null) { if (meta.getMetaType() == MetaType.STRING) { String metaStringQuery = "MetaDataString_" + meta.getUid() + ":*" + ClientUtils.escapeQueryChars(c.getQuery().toLowerCase()) + "*"; queries.add(metaStringQuery); } if (meta.getMetaType() == MetaType.NUMBER) { Double min = null; Double max = null; boolean toAdd = false; if (c.getRangeMin() != null && c.getRangeMin().trim().length() > 0) { min = Double.parseDouble(c.getRangeMin()); toAdd = true; } if (c.getRangeMax() != null && c.getRangeMax().trim().length() > 0) { max = Double.parseDouble(c.getRangeMax()); toAdd = true; } if (toAdd) { String metaNumberQuery = "MetaDataNumber_" + meta.getUid() + ":[" + (min != null ? min : "*") + " TO " + (max != null ? max : "*") + "]"; queries.add(metaNumberQuery); } } if (meta.getMetaType() == MetaType.DATE) { Date min = null; Date max = null; boolean toAdd = false; if (c.getRangeMin() != null && c.getRangeMin().trim().length() > 0) { try { min = sdf.parse(c.getRangeMin()); toAdd = true; } catch (Exception e) { toAdd = false; } } if (c.getRangeMax() != null && c.getRangeMax().trim().length() > 0) { try { max = sdf.parse(c.getRangeMax()); toAdd = true; } catch (Exception e) { toAdd = false; } } if (toAdd) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(TimeZone.getTimeZone("UTC")); String metaDateQuery = QueryBuilder.documentUpdateDateQuery( "MetaDataDate_" + meta.getUid(), c.getRangeMin(), c.getRangeMax()); queries.add(metaDateQuery); } } if (meta.getMetaType() == MetaType.BOOLEAN) { String metaBoolQuery = "MetaDataBoolean_" + meta.getUid() + ":" + Boolean.parseBoolean(c.getQuery()); queries.add(metaBoolQuery); } } } } } indexQuery.setFilterQueries(filterQueries.toArray(new String[] {})); if (sortField != null) { indexQuery.addSortField(sortField, sortDir != null ? SolrQuery.ORDER.valueOf(sortDir.toLowerCase()) : SolrQuery.ORDER.asc); } indexQuery.addSortField("score", SolrQuery.ORDER.desc); StringBuilder sQuery = new StringBuilder(); for (String q : queries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } if (queries.size() == 0) { /* Convert filter queries in query, to get result */ for (String q : filterQueries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } } else { filterQueries.addAll(aclFilterQueries); indexQuery.setFilterQueries(filterQueries.toArray(new String[] {})); } log.debug("Solr Final Query: " + sQuery); indexQuery.setQuery(sQuery.toString()); if (pageSize > -1 && page > -1) { indexQuery.setRows(pageSize); indexQuery.setStart(page); } else { indexQuery.setRows(Integer.MAX_VALUE); } return indexQuery; }
From source file:org.memex.GunAdsParser.java
License:Apache License
public void getAds(String modelFilePath, int start) throws SolrServerException, IOException { File modelFile = new File(modelFilePath); // Construct a SolrQuery SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setFields("content", "id"); query.addFilterQuery(fq);/*from ww w . java2s .c om*/ query.setStart(start); query.setRows(rows); QueryResponse rsp = this.solrCore.query(query); SolrDocumentList list = rsp.getResults(); SentimentModel model = new SentimentModel(modelFile); SentimentME sentiment = new SentimentME(model); while (list.getNumFound() > list.getStart() + rows) { long index = list.getStart(); for (SolrDocument doc : list) { String result = sentiment.predict((doc.getFieldValue("content")).toString()); SolrInputDocument document = new SolrInputDocument(); Map<String, Object> operation = new HashMap<>(); operation.put("set", result); document.addField("id", doc.getFieldValue("id")); document.addField("sentiment_s_md", operation); System.out.println(doc.getFieldValue("id")); solrCore.add(document); solrCore.commit(); if (true) { return; } System.out.println(index + ": " + result); index++; } //commit solrCore.commit(); if (list.getNumFound() > list.getStart() + rows) { query.setStart((int) (list.getStart() + rows)); rsp = this.solrCore.query(query); list = rsp.getResults(); } } }
From source file:org.mousephenotype.cda.indexers.AlleleIndexer.java
License:Apache License
@Override public RunStatus run() throws IndexerException { int count = 0; long rows = 0; RunStatus runStatus = new RunStatus(); long start = System.currentTimeMillis(); try (Connection connection = komp2DataSource.getConnection()) { // this query would only pick up lines that imits have phenotype / production status info about SolrQuery query = new SolrQuery("latest_project_status:*"); query.addFilterQuery("feature_type:* AND type:(gene OR Gene)"); query.setRows(BATCH_SIZE);//from www .j ava 2 s . c o m populateStatusLookup(); logger.info(" Added {} total status lookup beans", sangerAlleleBeanByMgiGeneAccessionId.size()); populateHumanSymbolLookup(); logger.info(" Added {} total human symbol lookup beans", humanSymbolLookupByMgiGeneAccessionId.size()); populateDiseaseLookup(); logger.info(" Added {} total disease lookup beans", diseaseBeanByMgiGeneAccessionId.size()); populateLegacyLookup(connection, runStatus); logger.info(" Added {} total legacy project lookup beans", legacyProjectByMgiGeneAccessionId.size()); populateMgiGeneId2EnsemblGeneId(connection); logger.info(" Added {} total Ensembl id to MGI gene id lookup beans", ensembleGeneIdByMgiGeneAccessionId.size()); alleleCore.deleteByQuery("*:*"); alleleCore.commit(); while (count <= rows) { query.setStart(count); QueryResponse response = allele2Core.query(query); rows = response.getResults().getNumFound(); List<SangerGeneBean> sangerGenes = response.getBeans(SangerGeneBean.class); // Convert to Allele DTOs Map<String, AlleleDTO> alleles = convertSangerGeneBeans(sangerGenes); // Look up the marker synonyms lookupMarkerSynonyms(connection, alleles, runStatus); // Look up ensembl id to MGI gene id mapping lookupMgiGeneId2EnsemblGeneId(alleles); // Look up the human mouse symbols lookupHumanMouseSymbols(alleles); // Look up the ES cell status lookupEsCellStatus(alleles); // Look up the disease data lookupDiseaseData(alleles); // Now index the alleles expectedDocumentCount += alleles.size(); indexAlleles(alleles); count += BATCH_SIZE; } alleleCore.commit(); } catch (SQLException | IOException | SolrServerException e) { e.printStackTrace(); throw new IndexerException(e); } logger.info(" Added {} total beans in {}", expectedDocumentCount, commonUtils.msToHms(System.currentTimeMillis() - start)); return runStatus; }
From source file:org.mousephenotype.cda.indexers.AlleleIndexer.java
License:Apache License
private void populateDiseaseLookup() throws SolrServerException, IOException { int docsRetrieved = 0; int numDocs = getDiseaseDocCount(); // Fields in the solr core to bring back String fields = StringUtils.join(Arrays.asList(DiseaseBean.DISEASE_ID, DiseaseBean.MGI_ACCESSION_ID, DiseaseBean.DISEASE_SOURCE, DiseaseBean.DISEASE_TERM, DiseaseBean.DISEASE_ALTS, DiseaseBean.DISEASE_CLASSES, DiseaseBean.HUMAN_CURATED, DiseaseBean.MOUSE_CURATED, DiseaseBean.MGI_PREDICTED, DiseaseBean.IMPC_PREDICTED, DiseaseBean.MGI_PREDICTED_KNOWN_GENE, DiseaseBean.IMPC_PREDICTED_KNOWN_GENE, DiseaseBean.MGI_NOVEL_PREDICTED_IN_LOCUS, DiseaseBean.IMPC_NOVEL_PREDICTED_IN_LOCUS), ","); // The solrcloud instance cannot give us all results back at once, // we must batch up the calls and build it up piece at a time while (docsRetrieved < numDocs + PHENODIGM_BATCH_SIZE) { SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery("type:disease_gene_summary"); query.setFields(fields);/* w w w . j av a 2s . c om*/ query.setStart(docsRetrieved); query.setRows(PHENODIGM_BATCH_SIZE); query.setSort(DiseaseBean.DISEASE_ID, SolrQuery.ORDER.asc); QueryResponse response = phenodigmCore.query(query); if (response == null) { throw new SolrServerException( "Response from phendigm core is null. Chcek phenodigm core is up with query: " + query); } List<DiseaseBean> diseases = response.getBeans(DiseaseBean.class); for (DiseaseBean disease : diseases) { if (!diseaseBeanByMgiGeneAccessionId.containsKey(disease.getMgiAccessionId())) { diseaseBeanByMgiGeneAccessionId.put(disease.getMgiAccessionId(), new ArrayList<DiseaseBean>()); } diseaseBeanByMgiGeneAccessionId.get(disease.getMgiAccessionId()).add(disease); } docsRetrieved += PHENODIGM_BATCH_SIZE; } }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
private SolrDocumentList runQuery(String query, int start, int length) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); log.debug("solr query=" + query); solrQuery.setQuery(query);/* w ww . ja va 2 s .c om*/ solrQuery.setStart(start); solrQuery.setRows(length); solrQuery.setFields("id"); QueryResponse rsp = null; rsp = sangerImagesCore.query(solrQuery); return rsp.getResults(); }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
private QueryResponse runFacetQuery(String query, String facetField, int start, int length, String filterQuery) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query);/*from w w w . j a va 2 s . co m*/ solrQuery.setStart(start); solrQuery.setRows(length); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(facetField); if (filterQuery != "") { solrQuery.addFilterQuery(filterQuery); } return sangerImagesCore.query(solrQuery); }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
public QueryResponse getDocsForGeneWithFacetField(String geneId, String facetName, String facetValue, String filterQuery, int start, int length) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); String processedGeneId = processQuery(geneId); String query = "accession:" + processedGeneId; solrQuery.setQuery(query);/* w ww . jav a 2s . c o m*/ solrQuery.setStart(start); solrQuery.setRows(length); // need to add quotes around so that spaces are allowed String facetQuery = facetName + ":" + processValueForSolr(facetValue); solrQuery.addFilterQuery(facetQuery); log.debug("facet name and val====" + facetQuery); if (filterQuery != "") { solrQuery.addFilterQuery(filterQuery); } return sangerImagesCore.query(solrQuery); }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
/** * Get all SOLR documents for a mammalian phenotype ontology term * * @param mpId the phenotype term to query for * @param start offset from zero//from w w w . j av a 2s . c om * @param length how many docs to return */ public QueryResponse getDocsForMpTerm(String mpId, int start, int length) throws SolrServerException, IOException { String id = processQuery(mpId); String query = "mp_id:" + id; log.debug("solr query=" + query); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); solrQuery.setStart(start); solrQuery.setRows(length); solrQuery.setFields(ImageDTO.FULL_RESOLUTION_FILE_PATH, "smallThumbnailFilePath", "largeThumbnailFilePath", "institute", "gender", "genotype", "maTerm", "annotationTermName", "genotypeString"); return sangerImagesCore.query(solrQuery); }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
/** * Returns documents from Solr Index filtered by the passed in query * filterField e.g. annotationTerm:large ear * @throws SolrServerException, IOException * * *///from w w w . jav a 2 s. c om public QueryResponse getFilteredDocsForQuery(String query, List<String> filterFields, String qf, String defType, int start, int length) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); //if query field is set (such as auto_suggest), add this to the search if (!qf.equals("")) { solrQuery.set("qf", qf); log.debug("added qf=" + qf); } //if defType is set (such as edismax), add this to the search if (!defType.equals("")) { solrQuery.set("defType", defType); log.debug("set defType=" + defType); } solrQuery.setQuery(query); solrQuery.setStart(start); solrQuery.setRows(length); for (String fieldNValue : filterFields) { String[] colonStrings = fieldNValue.split(":"); String filterField = colonStrings[0]; String filterParam = fieldNValue.substring(fieldNValue.indexOf(":") + 1, fieldNValue.length()); filterParam = processValueForSolr(filterParam); String fq = filterField + ":" + filterParam; log.debug("adding filter fieldNValue=" + fq); solrQuery.addFilterQuery(fq); } log.debug("Query is: " + solrQuery.toString()); return sangerImagesCore.query(solrQuery); }
From source file:org.mousephenotype.cda.solr.service.SolrIndex.java
License:Apache License
public QueryResponse getBatchQueryJson(String idlist, String fllist, String dataTypeName) throws SolrServerException, IOException { SolrClient server = null;/*from w w w . j av a 2 s. com*/ Map<String, String> coreIdQMap = coreIdQMap(); String qField = coreIdQMap.get(dataTypeName); if (dataTypeName.equals("disease")) { server = getSolrServer("disease"); // points to new phenodigm } if (dataTypeName.equals("hp")) { server = getSolrServer("mp"); } else if (dataTypeName.equals("ensembl") || dataTypeName.contains("marker_symbol")) { server = getSolrServer("gene"); } else { server = getSolrServer(dataTypeName); } String[] idList = StringUtils.split(idlist, ","); String querystr = null; // search keyword by mouse symbol: check 2 fields in gene core (marker_symbol_lowercase, marker_synonym_lowercase) if (dataTypeName.equals("mouse_marker_symbol")) { querystr = "marker_symbol_lowercase:(" + StringUtils.join(idList, " OR ") + ")" + " OR marker_synonym_lowercase:(" + StringUtils.join(idList, " OR ") + ")"; } // search keyword by human symbol: check 2 fields in gene core (human_gene_symbol_lowercase, human_symbol_synonym_lowercase) else if (dataTypeName.equals("human_marker_symbol")) { querystr = "human_gene_symbol_lowercase:(" + StringUtils.join(idList, " OR ") + ")" + " OR human_symbol_synonym_lowercase:(" + StringUtils.join(idList, " OR ") + ")"; } else { querystr = qField + ":(" + StringUtils.join(idList, " OR ") + ")"; } //System.out.println("BatchQuery: " + querystr); SolrQuery query = new SolrQuery(); query.setQuery(querystr); if (dataTypeName.equals("disease")) { // points to phenodigm //query.setFilterQueries("type:hp_mp"); query.setFilterQueries("type:disease_gene_summary"); } query.setStart(0); query.setRows(0); QueryResponse response = server.query(query, METHOD.POST); long rowCount = response.getResults().getNumFound(); // so that we know how many rows is returned // System.out.println("row count: "+rowCount); //query.setRows(idList.length); // default query.setRows((int) rowCount); // retrieves wanted fields query.setFields(fllist); System.out.println("BATCHQUERY " + dataTypeName + " : " + query); QueryResponse response2 = server.query(query, METHOD.POST); //System.out.println("response: "+ response2); return response2; }