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

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

Introduction

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

Prototype

public SolrQuery() 

Source Link

Usage

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * @see au.org.ala.biocache.dao.SearchDAO#findByFulltext(SpatialSearchRequestParams)
 *///from   w  w w. j  a  v  a  2 s.c o m
@Override
public SolrDocumentList findByFulltext(SpatialSearchRequestParams searchParams) throws Exception {
    SolrDocumentList sdl = null;

    try {
        queryFormatUtils.formatSearchQuery(searchParams);
        String queryString = searchParams.getFormattedQuery();
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery(queryString);
        solrQuery.setFields(searchParams.getFl());
        solrQuery.setFacet(false);
        solrQuery.setRows(searchParams.getPageSize());

        sdl = runSolrQuery(solrQuery, searchParams).getResults();
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
    }

    return sdl;
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * @see au.org.ala.biocache.dao.SearchDAO#getStatistics(SpatialSearchRequestParams)
 *//*from   w w w  .  j  a  v a  2  s  .co m*/
public Map<String, FieldStatsInfo> getStatistics(SpatialSearchRequestParams searchParams) throws Exception {
    try {
        queryFormatUtils.formatSearchQuery(searchParams);
        String queryString = searchParams.getFormattedQuery();
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery(queryString);
        for (String field : searchParams.getFacets()) {
            solrQuery.setGetFieldStatistics(field);
        }
        QueryResponse qr = runSolrQuery(solrQuery, searchParams);
        if (logger.isDebugEnabled()) {
            logger.debug(qr.getFieldStatsInfo());
        }
        return qr.getFieldStatsInfo();

    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
    }
    return null;
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

@Cacheable(cacheName = "legendCache")
public List<LegendItem> getLegend(SpatialSearchRequestParams searchParams, String facetField,
        String[] cutpoints) throws Exception {
    List<LegendItem> legend = new ArrayList<LegendItem>();

    queryFormatUtils.formatSearchQuery(searchParams);
    if (logger.isInfoEnabled()) {
        logger.info("search query: " + searchParams.getFormattedQuery());
    }//from  w  ww. ja v  a  2s  .  c o  m
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setQuery(searchParams.getFormattedQuery());
    solrQuery.setRows(0);
    solrQuery.setFacet(true);

    //is facet query?
    if (cutpoints == null) {
        //special case for the decade
        if (DECADE_FACET_NAME.equals(facetField))
            initDecadeBasedFacet(solrQuery, "occurrence_year");
        else
            solrQuery.addFacetField(facetField);
    } else {
        solrQuery.addFacetQuery("-" + facetField + ":[* TO *]");

        for (int i = 0; i < cutpoints.length; i += 2) {
            solrQuery.addFacetQuery(facetField + ":[" + cutpoints[i] + " TO " + cutpoints[i + 1] + "]");
        }
    }

    solrQuery.setFacetMinCount(1);
    solrQuery.setFacetLimit(-1);//MAX_DOWNLOAD_SIZE);  // unlimited = -1

    solrQuery.setFacetMissing(true);

    QueryResponse qr = runSolrQuery(solrQuery, searchParams.getFormattedFq(), 1, 0, "score", "asc");
    List<FacetField> facets = qr.getFacetFields();
    if (facets != null) {
        for (FacetField facet : facets) {
            List<FacetField.Count> facetEntries = facet.getValues();
            if (facet.getName().contains(facetField) && (facetEntries != null) && (facetEntries.size() > 0)) {
                int i = 0;
                for (i = 0; i < facetEntries.size(); i++) {
                    FacetField.Count fcount = facetEntries.get(i);
                    if (fcount.getCount() > 0) {
                        String fq = facetField + ":\"" + fcount.getName() + "\"";
                        if (fcount.getName() == null) {
                            fq = "-" + facetField + ":[* TO *]";
                        }
                        legend.add(new LegendItem(fcount.getName(), fcount.getCount(), fq));
                    }
                }
                break;
            }
        }
    }
    //check if we have query based facets
    Map<String, Integer> facetq = qr.getFacetQuery();
    if (facetq != null && facetq.size() > 0) {
        for (Entry<String, Integer> es : facetq.entrySet()) {
            legend.add(new LegendItem(es.getKey(), es.getValue(), es.getKey()));
        }
    }

    //check to see if we have a date range facet
    List<FacetField> facetDates = qr.getFacetDates();
    if (facetDates != null && !facetDates.isEmpty()) {
        FacetField ff = facetDates.get(0);
        String firstDate = null;
        for (FacetField.Count facetEntry : ff.getValues()) {
            String startDate = facetEntry.getName();
            if (firstDate == null) {
                firstDate = startDate;
            }
            String finishDate;
            if (DECADE_PRE_1850_LABEL.equals(startDate)) {
                startDate = "*";
                finishDate = firstDate;
            } else {
                int startYear = Integer.parseInt(startDate.substring(0, 4));
                finishDate = (startYear - 1) + "-12-31T23:59:59Z";
            }
            legend.add(new LegendItem(facetEntry.getName(), facetEntry.getCount(),
                    "occurrence_year:[" + startDate + " TO " + finishDate + "]"));
        }
    }
    return legend;
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

public FacetField getFacet(SpatialSearchRequestParams searchParams, String facet) throws Exception {
    queryFormatUtils.formatSearchQuery(searchParams);
    if (logger.isInfoEnabled()) {
        logger.info("search query: " + searchParams.getFormattedQuery());
    }//w w  w .j  a va 2s .c om
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setQuery(searchParams.getFormattedQuery());
    solrQuery.setRows(0);
    solrQuery.setFacet(true);
    solrQuery.addFacetField(facet);
    solrQuery.setFacetMinCount(1);
    solrQuery.setFacetLimit(-1); //MAX_DOWNLOAD_SIZE);  // unlimited = -1

    QueryResponse qr = runSolrQuery(solrQuery, searchParams.getFormattedFq(), 1, 0, "score", "asc");
    return qr.getFacetFields().get(0);
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

public Map<String, Integer> getOccurrenceCountsForTaxa(List<String> taxa) throws Exception {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setRows(0);/*from  w  w w.j av a 2 s. c om*/
    solrQuery.setFacet(true);
    solrQuery.setFacetLimit(taxa.size());
    StringBuilder sb = new StringBuilder();
    Map<String, Integer> counts = new HashMap<String, Integer>();
    Map<String, String> lftToGuid = new HashMap<String, String>();
    for (String lsid : taxa) {
        //get the lft and rgt value for the taxon
        String[] values = searchUtils.getTaxonSearch(lsid);
        //first value is the search string
        if (sb.length() > 0)
            sb.append(" OR ");
        sb.append(values[0]);
        lftToGuid.put(values[0], lsid);
        //add the query part as a facet
        solrQuery.add("facet.query", values[0]);
    }
    solrQuery.setQuery(sb.toString());

    //solrQuery.add("facet.query", "confidence:" + os.getRange());
    QueryResponse qr = runSolrQuery(solrQuery, null, 1, 0, "score", "asc");
    Map<String, Integer> facetQueries = qr.getFacetQuery();
    for (String facet : facetQueries.keySet()) {
        //add all the counts based on the query value that was substituted
        String lsid = lftToGuid.get(facet);
        Integer count = facetQueries.get(facet);
        if (lsid != null && count != null)
            counts.put(lsid, count);
    }
    if (logger.isDebugEnabled()) {
        logger.debug(facetQueries);
    }
    return counts;
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * Get SOLR max boolean clauses.//from  w w w .ja v  a  2s .  c om
 *
 * @return
 */
public int getMaxBooleanClauses() {
    if (maxBooleanClauses == 0) {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setFacet(false);
        solrQuery.setRows(0);

        int value = 1024;
        boolean ok = false;
        int step = -1;
        while (step != 0 || ok == false) {
            String q = 1 + StringUtils.repeat(" AND 1", value - 1);
            solrQuery.setQuery(q);
            try {
                query(solrQuery, queryMethod); //throws exception when too many boolean clauses
                if (step == -1)
                    value *= 2; //push upper limit
                else
                    step /= 2;
                ok = true;
            } catch (Exception e) {
                if (step == -1)
                    step = value / 2; //set initial step value
                else if (ok == false && step > 1)
                    step /= 2;
                ok = false;
            }
            if (step != -1) {
                if (ok)
                    value += step;
                else
                    value -= step;
            }
        }
        maxBooleanClauses = value;
    }

    queryFormatUtils.setMaxBooleanClauses(maxBooleanClauses);

    return maxBooleanClauses;
}

From source file:au.org.intersect.dms.catalogue.db.SolrIndexFacade.java

License:Open Source License

/**
 * Returns all datasets owned by the user matching specified full text search query
 * //from  w w w  . j  a v a2 s  . c  o m
 * @param username
 *            username of the owner in DMS system
 * @param userProjects
 *            list of project codes from booking system this username belongs to
 * @param query
 *            full text search query
 * @param startIndex
 *            index of the first dataset to display on the curect page
 * @param pageSize
 *            max number of datasets to display on each page
 * @return datasets of this user (one page)
 */
public DatasetSearchResult findDatasets(String username, List<Long> projects, String query, int startIndex,
        int pageSize) {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setFields(ID);
    solrQuery.setStart(startIndex);
    solrQuery.setRows(pageSize);
    solrQuery.setSortField(ID, ORDER.asc);
    StringBuilder queryString = new StringBuilder();
    if (query == null || "".equals(query)) {
        queryString.append("dataset.metadata_t:*");
    } else {
        queryString.append(query);
    }
    queryString.append(" AND (dataset.owner_s:").append(username);

    String projectQuery = buildProjectCriteria(projects);
    if (!projectQuery.isEmpty()) {
        queryString.append(" OR ").append(projectQuery);
    }
    queryString.append(")");

    solrQuery.setQuery(queryString.toString());
    QueryResponse solrResponse = DbDataset.search(solrQuery);
    SolrDocumentList docs = solrResponse.getResults();

    List<Dataset> datasets = convertSolrDocuments2Datasets(docs);

    DatasetSearchResult result = new DatasetSearchResult();
    result.setDatasets(datasets);
    result.setTotalSize(docs != null ? docs.getNumFound() : 0);
    return result;
}

From source file:brooklyn.entity.nosql.solr.SolrJSupport.java

License:Apache License

public Iterable<SolrDocument> getDocuments() throws Exception {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("*:*");

    return server.query(solrQuery).getResults();
}

From source file:cn.edu.pku.lib.dataverse.SolrSearchServiceBean.java

public long getDatasetCount() throws SearchException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("*:*");
    solrQuery.setFilterQueries(SearchFields.TYPE + ":datasets", SearchFields.PUBLICATION_STATUS + ":Published");
    solrQuery.setStart(0);/*from  ww  w . j  a  v  a 2s  . c  o m*/
    solrQuery.setRows(0);
    QueryResponse queryResponse = null;
    try {
        queryResponse = solrServer.query(solrQuery);
        return queryResponse.getResults().getNumFound();
    } catch (HttpSolrServer.RemoteSolrException | SolrServerException ex) {
        logger.log(Level.INFO, null, ex);
        throw new SearchException("Internal Dataverse Search Engine Error", ex);
    }
}

From source file:cn.edu.pku.lib.dataverse.SolrSearchServiceBean.java

public long getDataverseCount() throws SearchException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("*:*");
    solrQuery.setFilterQueries(SearchFields.TYPE + ":dataverses",
            SearchFields.PUBLICATION_STATUS + ":Published");
    solrQuery.setStart(0);//from w ww. j  a v a  2 s  .c  om
    solrQuery.setRows(0);
    QueryResponse queryResponse = null;
    try {
        queryResponse = solrServer.query(solrQuery);
        return queryResponse.getResults().getNumFound();
    } catch (HttpSolrServer.RemoteSolrException | SolrServerException ex) {
        logger.log(Level.INFO, null, ex);
        throw new SearchException("Internal Dataverse Search Engine Error", ex);
    }
}