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

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

Introduction

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

Prototype

public Integer getRows() 

Source Link

Usage

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

License:Open Source License

private EventSummaryResult execute(final SolrQuery query, boolean justUuids) throws ZepException {
    EventSummaryResult.Builder result = EventSummaryResult.newBuilder();

    logger.debug("Searching SOLR for events matching: {}", query.getQuery());
    final long now = logger.isDebugEnabled() ? System.currentTimeMillis() : 0;
    final QueryResponse response;
    try {/*from   ww  w . j  a  v a  2s  .  com*/
        response = queryServer.query(query);
        final int numFound = (int) response.getResults().getNumFound();
        result.setTotal(numFound);
        if (query.getRows() != null) {
            final int limit = query.getRows();
            final int offset = (query.getStart() == null) ? 0 : query.getStart();
            result.setLimit(limit);
            if (numFound > offset + limit)
                result.setNextOffset(offset + limit);
        }

        logger.debug("Found {} results in SOLR", numFound);

        if (justUuids) {
            for (SolrDocument doc : response.getResults())
                result.addEvents(SolrEventIndexMapper.toEventSummary(doc));
        } else {
            Map<String, EventSummary> sortedResults = Maps.newLinkedHashMap();
            Set<EventSummary> toLookup = Sets.newHashSet();
            for (SolrDocument doc : response.getResults()) {
                EventSummary event = SolrEventIndexMapper.toEventSummary(doc);
                if (event.hasFirstSeenTime()) {
                    sortedResults.put(event.getUuid(), event);
                } else {
                    // We only store keys in the index for archived events. This must be one of those.
                    // Set a place-holder now. We'll find it in the database shortly.
                    sortedResults.put(event.getUuid(), null);
                    toLookup.add(event);
                }
            }
            if (!toLookup.isEmpty()) {
                final long beforeLookup = System.currentTimeMillis();
                logger.debug("Looking up {} events by UUID", toLookup.size());
                List<EventSummary> events = archiveDao.findByKey(toLookup);
                if (events.size() != toLookup.size()) {
                    int missing = toLookup.size() - events.size();
                    logger.info(
                            "Event archive index out of sync - {} of {} event UUIDs are in Solr index, but not in database.",
                            missing, toLookup.size());
                }
                for (EventSummary event : events)
                    sortedResults.put(event.getUuid(), event); // a re-insertion -- solr sort is preserved.
                logger.debug("Query spent {} milliseconds to lookup {} events by UUID.",
                        System.currentTimeMillis() - beforeLookup, toLookup.size());
            } else {
                logger.debug("Query did not have to lookup any events by UUID");
            }
            for (EventSummary event : sortedResults.values())
                if (event != null)
                    result.addEvents(event);
        }
    } catch (SolrServerException e) {
        throw new ZepException(e);
    } finally {
        if (logger.isDebugEnabled())
            logger.debug("Query {} finished in {} milliseconds", query, System.currentTimeMillis() - now);
    }
    return result.build();
}

From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.params.UrlSolrParamsTest.java

License:Apache License

@Test
public void params1() throws Exception {
    String params = "q=*:*&sort=rigid asc&rows=30&fq=+dataset:(\"Cancer\")&fq=+go_expanded_id:(\"GO:0048511\")&start=0";

    UrlSolrParams solrParams = new UrlSolrParams(params);

    SolrQuery solrQuery = new SolrQuery();
    solrQuery.add(solrParams);/*  w ww . j  av  a  2 s . co m*/

    Assert.assertEquals("*:*", solrQuery.getQuery());
    Assert.assertEquals("rigid asc", solrQuery.getSortField());
    Assert.assertEquals(Integer.valueOf(30), solrQuery.getRows());
    Assert.assertEquals(Integer.valueOf(0), solrQuery.getStart());

    Assert.assertTrue(Arrays.asList(solrQuery.getFilterQueries()).contains("+go_expanded_id:(\"GO:0048511\")"));
    Assert.assertTrue(Arrays.asList(solrQuery.getFilterQueries()).contains("+dataset:(\"Cancer\")"));
}

From source file:uk.co.flax.ukmp.search.solr.SolrSearchEngine.java

License:Apache License

@Override
public SearchResults getTextBatch(int batchNum) throws SearchEngineException {
    SearchResults results;//from   w  w  w  .  j av  a 2 s . c  o  m
    TermsConfiguration termsConfig = config.getTermsConfiguration();

    SolrQuery query = new SolrQuery("*:*");
    query.setRequestHandler(termsConfig.getHandler());
    query.setFields(termsConfig.getField());
    query.setRows(termsConfig.getBatchSize());
    query.setStart(batchNum * termsConfig.getBatchSize());
    query.addFilterQuery(termsConfig.getFilters().toArray(new String[0]));

    try {
        QueryResponse response = server.query(query);
        SolrDocumentList docs = response.getResults();

        // Attempt to ensure we always return at least one batch of results
        if (docs.getNumFound() == 0) {
            LOGGER.debug("No tweets found in text batch - running again without filters");
            docs = runQueryWithoutFilters(query, termsConfig.getFilters());
        }

        List<Tweet> tweets = new ArrayList<Tweet>(docs.size());
        for (SolrDocument doc : docs) {
            Tweet tweet = new Tweet();
            tweet.setText((String) doc.getFieldValue(termsConfig.getField()));
            tweets.add(tweet);
        }

        results = new SearchResults(query.getStart(), docs.getNumFound(), query.getRows(), tweets, null);
    } catch (SolrServerException e) {
        LOGGER.error("Server exception caught getting text batch {}: {}", batchNum, e.getMessage());
        throw new SearchEngineException(e);
    }

    return results;
}