List of usage examples for org.apache.solr.client.solrj SolrQuery getRows
public Integer getRows()
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; }