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.xwiki.query.solr.internal.SolrQueryExecutor.java

License:Open Source License

@Override
public <T> List<T> execute(Query query) throws QueryException {
    try {/*  www .j a v  a  2  s  .  c o  m*/
        SolrInstance solrInstance = solrInstanceProvider.get();

        SolrQuery solrQuery = new SolrQuery(query.getStatement());

        // Overwrite offset and limit only if the query object explicitly says so, otherwise use whatever the query
        // statement says or the defaults
        if (query.getOffset() > 0) {
            solrQuery.setStart(query.getOffset());
        }
        if (query.getLimit() > 0) {
            solrQuery.setRows(query.getLimit());
        }

        // TODO: good idea? Any confusion? Do we really needs something like this?
        // Reuse the Query.getNamedParameters() map to get extra parameters.
        for (Entry<String, Object> entry : query.getNamedParameters().entrySet()) {
            Object value = entry.getValue();

            if (value instanceof Iterable) {
                solrQuery.set(entry.getKey(), toStringArray((Iterable) value));
            } else if (value != null && value.getClass().isArray()) {
                solrQuery.set(entry.getKey(), toStringArray(value));
            } else {
                solrQuery.set(entry.getKey(), String.valueOf(value));
            }
        }

        QueryResponse response = solrInstance.query(solrQuery);

        // Check access rights need to be checked before returning the response.
        // FIXME: this is not really the best way, mostly because at this point all grouping operations
        // have already been performed and any change on the result will not ensure that the grouping
        // information (facets, highlighting, maxScore, etc.) is still relevant.
        // A better way would be using a PostFilter as described in this article:
        // http://java.dzone.com/articles/custom-security-filtering-solr
        // Basically, we would be asking
        this.filterResponse(response);

        return (List<T>) Arrays.asList(response);
    } catch (Exception e) {
        throw new QueryException("Exception while executing query", query, e);
    }
}

From source file:org.zaizi.sensefy.api.solr.querybuilder.QueryBuilder.java

License:Open Source License

/**
 * return a solr query built with all the parameters in input . Spellcheck
 * included/*  ww w.j a  va2 s.co m*/
 * 
 * @param query
 * @param fields
 * @param filters
 * @param start
 * @param rows
 * @param security
 * @param clustering
 * @param sensefyToken
 * @return
 * @throws SensefyException
 */
public static SolrQuery getSolrQuery(String query, String fields, boolean facet,
        FacetConfigurationList facetConfig, String filters, int start, Integer rows, String order,
        boolean security, boolean spellcheck, boolean clustering, Principal user) {

    SensefyUser sensefyUser = SensefyUserMapper.getSensefyUserFromPrincipal(user);

    if (rows == null) {
        rows = DEFAULT_ROWS;
    }
    // retrieve the documents from primary index
    SolrQuery documentsQuery = new SolrQuery(query);
    Set<String> selectedFields = new HashSet<String>();
    documentsQuery.setRows(rows);
    documentsQuery.set("spellcheck", spellcheck);
    documentsQuery.set("clustering", clustering);
    if (fields != null && !fields.isEmpty()) {
        String[] fieldsArray = fields.split(",");
        documentsQuery.setFields(fieldsArray);
    }
    if (filters != null && !filters.isEmpty()) {
        String[] filtersArray = buildFilterQueries(filters.split(","), selectedFields);
        documentsQuery.setFilterQueries(filtersArray);
    }
    if (order != null && !order.isEmpty()) {
        documentsQuery.set(CommonParams.SORT, order);
    }

    if (security) {

        String filterQueryACLs = SecurityQueryBuilder.getSecurityFilterQuery(sensefyUser);
        documentsQuery.addFilterQuery(filterQueryACLs);

    }
    documentsQuery.set("TZ", sensefyUser.getTimezone().getID());
    documentsQuery.setStart(start);
    ModifiableSolrParams querySolrParams = new ModifiableSolrParams();
    if (facet) {
        // facets must be created with proper exclusion tag where needed
        documentsQuery.setFacet(true);
        List<FacetConfiguration> facetConfigurations = facetConfig.getFacetConfigurations();
        for (FacetConfiguration facetConfiguration : facetConfigurations) {
            String tag = null;
            if (selectedFields.contains(facetConfiguration.getField()))
                tag = "tag-" + facetConfiguration.getField();
            facetConfiguration.getSolrFacetParams(querySolrParams, tag);
        }
    }
    documentsQuery.add(querySolrParams);
    return documentsQuery;
}

From source file:org.zenoss.zep.index.impl.solr.SolrEventIndexBackend.java

License:Open Source License

@Override
public SavedSearchProcessor<SolrSavedSearch> savedSearchProcessor() {
    assertReady();//from   ww  w .ja  v a  2s  . c o m
    return new SavedSearchProcessor<SolrSavedSearch>() {
        @Override
        public EventSummaryResult result(SolrSavedSearch search, int offset, int limit) throws ZepException {
            SolrQuery query = search.getSolrQuery().getCopy();
            query.setRows(limit);
            query.setStart(offset);
            query.setFields(IndexConstants.FIELD_UUID, IndexConstants.FIELD_PROTOBUF);
            return execute(query, false);
        }
    };
}

From source file:org.zenoss.zep.index.impl.solr.SolrEventIndexBackend.java

License:Open Source License

@Override
public SavedSearchProcessor<SolrSavedSearch> savedSearchUuidsProcessor() {
    assertReady();//from   ww  w.  jav  a  2  s. c  o  m
    return new SavedSearchProcessor<SolrSavedSearch>() {
        @Override
        public EventSummaryResult result(SolrSavedSearch search, int offset, int limit) throws ZepException {
            SolrQuery query = search.getSolrQuery().getCopy();
            query.setRows(limit);
            query.setStart(offset);
            query.setFields(IndexConstants.FIELD_UUID);
            return execute(query, true);
        }
    };
}

From source file:org.zenoss.zep.index.impl.solr.SolrEventIndexBackend.java

License:Open Source License

private SolrQuery buildSolrQuery(EventFilter filter, EventFilter exclusionFilter, Integer limit, Integer offset,
        List<EventSort> sortList, SolrFieldFilter fieldFilter) throws ZepException {
    final String query = buildQuery(filter, exclusionFilter);
    SolrQuery solrQuery = new SolrQuery().setQuery(query);

    if (limit != null && limit < MAX_RESULTS && limit > 0)
        solrQuery.setRows(limit);//from   w ww.  j a va 2  s. c o m
    else
        solrQuery.setRows(MAX_RESULTS);

    if (offset != null)
        solrQuery.setStart(offset);

    if (sortList == null)
        solrQuery.clearSorts();
    else if (sortList.isEmpty())
        solrQuery.addSort(SortClause.desc(IndexConstants.FIELD_LAST_SEEN_TIME));
    else
        for (EventSort sort : sortList)
            for (SortClause clause : createSortClauses(sort))
                solrQuery.addSort(clause);

    if (fieldFilter != null) {
        switch (fieldFilter) {
        case DEFAULTS:
            break;
        case JUST_UUID:
            solrQuery.setFields(IndexConstants.FIELD_UUID);
            break;
        case UUID_LAST_SEEN_AND_PROTOBUF:
            solrQuery.setFields(IndexConstants.FIELD_UUID, IndexConstants.FIELD_LAST_SEEN_TIME,
                    IndexConstants.FIELD_PROTOBUF);
            break;
        case SEARCH_EVENT_TAG_SEVERITIES:
            solrQuery.setFields(IndexConstants.FIELD_ELEMENT_IDENTIFIER,
                    IndexConstants.FIELD_ELEMENT_SUB_IDENTIFIER, IndexConstants.FIELD_SEVERITY,
                    IndexConstants.FIELD_STATUS, IndexConstants.FIELD_TAGS, IndexConstants.FIELD_COUNT);
            break;
        default:
            throw new IllegalStateException("Unexpected fieldFilter: " + fieldFilter);
        }
    }
    solrQuery.setIncludeScore(false);
    solrQuery.setHighlight(false);
    solrQuery.setTerms(false);
    solrQuery.setFacet(false);

    return solrQuery;
}

From source file:podd.search.impl.IndexSearcherImpl.java

License:Open Source License

/**
 * Helper method to create SolrQuery with common configuration
 * @return/*from w  w w  . j a v a 2 s  .co  m*/
 */
protected SolrQuery createQuery(SearchCriteria criteria) {
    Integer start = (criteria.getStart() != null) ? criteria.getStart().intValue() : null;

    SolrQuery solrQuery = createBasicSolrQuery();
    //solrQuery.setParam("hl.requireFieldMatch", "true");
    solrQuery.setQuery(criteria.getQuery());
    solrQuery.setStart(start);
    solrQuery.setRows(criteria.getPageSize());
    solrQuery.setFilterQueries(criteria.getQueryFilter());

    return solrQuery;
}

From source file:se.kmr.scam.sqi.query.ScamRepositoryQueryManagerImpl.java

License:Apache License

/**
 * Search in the repository after entries
 * //from   w w  w.ja  v  a 2 s . c o  m
 * @param query a query of format {@link #getLanguage()}.
 * @param start start record of the results set. The index of the result set size starts with 1.
  * @param resultsSetSize number of results.  0 (zero) = no limit
  * @param maxResults maximum number of query results.  0 (zero) = no limit
 * @param resultsFormat format of the results
 *
 * @return A string with hits or null.
 * @throws Exception if something goes wrong
 */
public String query(String query, int start, int resultsSetSize, int maxResults, ResultFormatType resultsFormat)
        throws TranslationException {
    log.info("query:from= " + getLanguage().toString() + "\nto= " + QueryLanguageType.LUCENEQL.toString()
            + "\nresultsFormat= " + resultsFormat.toString() + "\nquery= " + query);

    //List<Entry> searchResults = sparqlSearch(query);
    SolrQuery q = new SolrQuery(query);
    q.set("public", "true");
    q.setStart(start);
    q.setRows(resultsSetSize);
    q.addSortField("score", ORDER.desc);
    q.addSortField("modified", ORDER.desc);
    QueryResult r = rm.getSolrSupport().sendQuery(q);
    Set<Entry> searchResults = r.getEntries();
    resultCount.put(query, r.getHits());
    String searchResult = null;

    if (resultsFormat == ResultFormatType.LOM) {
        searchResult = createResultsLOM(new ArrayList<Entry>(searchResults), start, resultsSetSize, maxResults);
    } else if (resultsFormat == ResultFormatType.STRICT_LRE) {
        searchResult = createResultsStrictLRE(new ArrayList<Entry>(searchResults), start, resultsSetSize,
                maxResults);
    } else if (resultsFormat == ResultFormatType.PLRF0) {
        searchResult = createResultsPLRF0(new ArrayList<Entry>(searchResults), start, resultsSetSize,
                maxResults);
    }

    return searchResult;
}

From source file:se.nrm.dina.naturarv.portal.Main.java

public static void main(String[] args) {
    try {//from   w ww .  j  a va  2  s. c o m
        HttpSolrClient client = new HttpSolrClient.Builder("http://localhost:8983/solr").build();
        SolrQuery query = new SolrQuery();

        query.setQuery("*");
        query.setFields("clnm");
        query.setStart(0);

        QueryResponse response = client.query(query);
        SolrDocumentList results = response.getResults();
        for (int i = 0; i < results.size(); ++i) {
            System.out.println(results.get(i));
        }
    } catch (SolrServerException | IOException ex) {

    }
}

From source file:sk.opendata.odn.ui.panel.ResultPanel.java

License:Open Source License

/**
 * Update the search results display with items obtained using given query.
 * /*from  w  w w  . j a  v  a 2  s  .  c o m*/
 * See http://wiki.apache.org/solr/ExtendedDisMax .
 * 
 * @param query SOLR ExtendedDisMax (i.e. user friendly) query
 * @throws IOException when creation of SOLR back-end fails
 * @throws SolrServerException when SOLR query fails
 */
public void doSearch(final String query) throws IOException, SolrServerException {
    if (query.isEmpty())
        // nothing to do with empty search query
        return;

    SolrRepository solrRepository = SolrRepository.getInstance();

    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery(query);
    solrQuery.set("defType", "edismax");

    // prepare the SOLR query
    // we're trying to identify some "basic" query types and perform tuning those special cases
    if (query.matches("[0-9]{8}")) {
        // ICO
        solrQuery.set("qf", "ico^2 " + "donor_ico " + "customer_ico " + "supplier_ico");
    } else if (PscUtil.isPsc(query)) {
        // PCS
        solrQuery.set("qf", "donor_psc^2 " + "seat " + // TODO: this is "text_general' in SOLR schema and here PSC might still be in a form "058 01" thus searching for "05801" wont match it
                "donor_address" // TODO: -"-
        );
        // re-set query to normalized PSC
        solrQuery.setQuery(PscUtil.normalize(query));
    } else {
        // default
        solrQuery.set("qf", "name^3 " + "legal_form^0.5 " + "seat " + "ico^2 " + "date_from " + "date_to "
                + "donor_name^2 " + "donor_surname^2 " + "donor_company^2 " + "donor_ico " + "currency^0.5 "
                + "donor_address " + "donor_psc " + "donor_city " + "recipient_party^0.75 " + "year "
                + "accept_date " + "note^0.5 " + "procurement_subject " + "customer_ico " + "supplier_ico");
    }

    // TODO: paging - for now we just limit the search result list
    int page = 0;
    solrQuery.setStart(page * RESULTS_PER_PAGE);
    solrQuery.setRows(RESULTS_PER_PAGE);

    logger.debug("XXX SOLR query: " + solrQuery.toString());

    // obtain results
    QueryResponse queryResponse = solrRepository.getSolrServer().query(solrQuery);
    List<SolrItem> responseItems = queryResponse.getBeans(SolrItem.class);

    // update the display
    resultList.addAll(responseItems);
}

From source file:solrbook.ch11.solrj.cli.command.SearchCommand.java

License:Apache License

@Override
public void mainProcess(Map<String, Object> parameters) throws Exception {
    try {/* w  w w  .  j  ava  2  s.c om*/
        /*
         * SolrQuery ?
         */
        SolrQuery solrQuery = new SolrQuery(queryString);

        /*
         * ??
         */
        solrQuery.setStart(start);
        solrQuery.setRows(rows);

        /*
         * ??????
         */
        if (StringUtils.isNotEmpty(sortField) && StringUtils.isNotEmpty(sortOrder)) {
            /*
             * ?????
             */
            solrQuery.setSort(sortField,
                    Enum.valueOf(org.apache.solr.client.solrj.SolrQuery.ORDER.class, sortOrder));
        }

        /*
         * ?????
         */
        for (String f : fieldList.split(",")) {
            if (StringUtils.isNotEmpty(f)) {
                solrQuery.addField(f.trim());
            }
        }

        /*
         * SolrClient ??
         */
        QueryResponse queryResponse = solrClient.query(solrQuery);

        /*
         * ??????? List ?
         */
        List<Map<String, Object>> documentList = new LinkedList<Map<String, Object>>();

        /*
         * ???
         */
        SolrDocumentList solrDocumentList = queryResponse.getResults();

        /*
         * ???
         */
        for (SolrDocument solrDocument : solrDocumentList) {
            /*
             * ???? Map ?
             */
            Map<String, Object> documentMap = new HashMap<String, Object>();

            /*
             * ???????
             */
            for (String fieldName : solrDocument.getFieldNames()) {
                /*
                 * ??? Map ?
                 */
                Object fieldValue = solrDocument.getFieldValue(fieldName);
                documentMap.put(fieldName, fieldValue);
            }

            /*
             * ? Map ?
             */
            documentMap.put("score", solrDocument.getFieldValue("score"));

            /*
             * ???
             */
            documentList.add(documentMap);
        }

        /*
         * ?????
         */
        response.put("QTime", queryResponse.getQTime());

        /*
         * ????
         */
        response.put("maxScore", solrDocumentList.getMaxScore());

        /*
         * ????
         */
        response.put("numFound", solrDocumentList.getNumFound());

        /*
         * ????
         */
        response.put("result", documentList);

        status = STATUS_SUCCESS;
        message = SUCCESS_MESSAGE;
    } catch (Exception e) {
        /*
         * ????
         */
        status = STATUS_ERROR;
        message = e.getMessage();
    }
}