Example usage for org.apache.solr.client.solrj SolrQuery setStart

List of usage examples for org.apache.solr.client.solrj SolrQuery setStart

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setStart.

Prototype

public SolrQuery setStart(Integer start) 

Source Link

Usage

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;
}