List of usage examples for org.apache.solr.client.solrj SolrQuery getRows
public Integer getRows()
From source file:at.pagu.soldockr.core.QueryParserTest.java
License:Apache License
private void assertPaginationNotPresent(SolrQuery solrQuery) { Assert.assertNull(solrQuery.getStart()); Assert.assertNull(solrQuery.getRows()); }
From source file:at.pagu.soldockr.core.QueryParserTest.java
License:Apache License
private void assertPaginationPresent(SolrQuery solrQuery, int start, int rows) { Assert.assertEquals(Integer.valueOf(start), solrQuery.getStart()); Assert.assertEquals(Integer.valueOf(rows), solrQuery.getRows()); }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * Process the {@see org.apache.solr.client.solrj.response.QueryResponse} from a SOLR search and return * a {@link au.org.ala.biocache.dto.SearchResultDTO} * * @param qr// w w w .j a va 2 s .co m * @param solrQuery * @return */ private SearchResultDTO processSolrResponse(SearchRequestParams params, QueryResponse qr, SolrQuery solrQuery, Class resultClass) { SearchResultDTO searchResult = new SearchResultDTO(); SolrDocumentList sdl = qr.getResults(); // Iterator it = qr.getResults().iterator() // Use for download List<FacetField> facets = qr.getFacetFields(); List<FacetField> facetDates = qr.getFacetDates(); Map<String, Integer> facetQueries = qr.getFacetQuery(); if (facetDates != null) { if (logger.isDebugEnabled()) { logger.debug("Facet dates size: " + facetDates.size()); } facets.addAll(facetDates); } List<OccurrenceIndex> results = qr.getBeans(resultClass); //facet results searchResult.setTotalRecords(sdl.getNumFound()); searchResult.setStartIndex(sdl.getStart()); searchResult.setPageSize(solrQuery.getRows()); //pageSize searchResult.setStatus("OK"); String[] solrSort = StringUtils.split(solrQuery.getSortField(), " "); // e.g. "taxon_name asc" if (logger.isDebugEnabled()) { logger.debug("sortField post-split: " + StringUtils.join(solrSort, "|")); } searchResult.setSort(solrSort[0]); // sortField searchResult.setDir(solrSort[1]); // sortDirection searchResult.setQuery(params.getUrlParams()); //this needs to be the original URL>>>> searchResult.setOccurrences(results); List<FacetResultDTO> facetResults = buildFacetResults(facets); //all belong to uncertainty range for now if (facetQueries != null && !facetQueries.isEmpty()) { Map<String, String> rangeMap = rangeBasedFacets.getRangeMap("uncertainty"); List<FieldResultDTO> fqr = new ArrayList<FieldResultDTO>(); for (String value : facetQueries.keySet()) { if (facetQueries.get(value) > 0) fqr.add(new FieldResultDTO(rangeMap.get(value), facetQueries.get(value), value)); } facetResults.add(new FacetResultDTO("uncertainty", fqr)); } //handle all the range based facets if (qr.getFacetRanges() != null) { for (RangeFacet rfacet : qr.getFacetRanges()) { List<FieldResultDTO> fqr = new ArrayList<FieldResultDTO>(); if (rfacet instanceof Numeric) { Numeric nrfacet = (Numeric) rfacet; List<RangeFacet.Count> counts = nrfacet.getCounts(); //handle the before if (nrfacet.getBefore().intValue() > 0) { fqr.add(new FieldResultDTO("[* TO " + getUpperRange(nrfacet.getStart().toString(), nrfacet.getGap(), false) + "]", nrfacet.getBefore().intValue())); } for (RangeFacet.Count count : counts) { String title = getRangeValue(count.getValue(), nrfacet.getGap()); fqr.add(new FieldResultDTO(title, count.getCount())); } //handle the after if (nrfacet.getAfter().intValue() > 0) { fqr.add(new FieldResultDTO("[" + nrfacet.getEnd().toString() + " TO *]", nrfacet.getAfter().intValue())); } facetResults.add(new FacetResultDTO(nrfacet.getName(), fqr)); } } } //update image URLs for (OccurrenceIndex oi : results) { updateImageUrls(oi); } searchResult.setFacetResults(facetResults); // The query result is stored in its original format so that all the information // returned is available later on if needed searchResult.setQr(qr); return searchResult; }
From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.java
License:Open Source License
public Hits search(String searchEngineId, long companyId, Query query, Sort[] sorts, int start, int end) throws SearchException { try {/* ww w.ja va2s.co m*/ SolrQuery solrQuery = translateQuery(companyId, query, sorts, start, end); QueryResponse queryResponse = _solrServer.query(solrQuery); boolean allResults = false; if (solrQuery.getRows() == 0) { allResults = true; } return subset(solrQuery, query, query.getQueryConfig(), queryResponse, allResults); } catch (Exception e) { _log.error(e, e); if (!_swallowException) { throw new SearchException(e.getMessage()); } return new HitsImpl(); } }
From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.java
License:Open Source License
protected Hits doSearch(SearchContext searchContext, Query query) throws Exception { SolrQuery solrQuery = translateQuery(searchContext.getCompanyId(), query, searchContext.getSorts(), searchContext.getStart(), searchContext.getEnd()); Map<String, Facet> facets = searchContext.getFacets(); for (Facet facet : facets.values()) { if (facet.isStatic()) { continue; }/*from w w w . j a va 2s . co m*/ FacetConfiguration facetConfiguration = facet.getFacetConfiguration(); if (facet instanceof RangeFacet) { solrQuery.addFacetField(facetConfiguration.getFieldName()); JSONObject dataJSONObject = facetConfiguration.getData(); JSONArray rangesJSONArray = dataJSONObject.getJSONArray("ranges"); if (rangesJSONArray == null) { continue; } for (int i = 0; i < rangesJSONArray.length(); i++) { JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i); String range = rangeJSONObject.getString("range"); String facetQuery = facetConfiguration.getFieldName() + StringPool.COLON + range; solrQuery.addFacetQuery(facetQuery); } } else { solrQuery.addFacetField(facetConfiguration.getFieldName()); } } solrQuery.setFacetLimit(-1); QueryResponse queryResponse = _solrServer.query(solrQuery); boolean allResults = false; if (solrQuery.getRows() == 0) { allResults = true; } List<FacetField> facetFields = queryResponse.getFacetFields(); if (facetFields != null) { for (FacetField facetField : facetFields) { Facet facet = facets.get(facetField.getName()); FacetCollector facetCollector = null; if (facet instanceof RangeFacet) { facetCollector = new SolrFacetQueryCollector(facetField.getName(), queryResponse.getFacetQuery()); } else { facetCollector = new SolrFacetFieldCollector(facetField.getName(), facetField); } facet.setFacetCollector(facetCollector); } } return subset(solrQuery, query, query.getQueryConfig(), queryResponse, allResults); }
From source file:com.nridge.ds.solr.SolrDS.java
License:Open Source License
/** * Returns a <i>Document</i> representation of all documents * fetched from the underlying content source (using a wildcard * criteria)./* w w w. j a v a 2 s.c om*/ * <p> * <b>Note:</b> Depending on the size of the content source * behind this data source, this method could consume large * amounts of heap memory. Therefore, it should only be * used when the number of column and rows is known to be * small in size. * </p> * * @return Document hierarchy representing all documents in * the content source. * * @throws com.nridge.core.base.ds.DSException Data source related exception. */ @Override public Document fetch() throws DSException { Document solrDocument; Logger appLogger = mAppMgr.getLogger(this, "fetch"); appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER); initialize(); DSCriteria dsCriteria = new DSCriteria("Solr Query"); dsCriteria.add(Solr.FIELD_QUERY_NAME, Field.Operator.EQUAL, Solr.QUERY_ALL_DOCUMENTS); SolrQuery solrQuery = mSolrQueryBuilder.create(dsCriteria); solrQuery.setStart(Solr.QUERY_OFFSET_DEFAULT); solrQuery.setRows(Solr.QUERY_PAGESIZE_DEFAULT); appLogger.debug(String.format("%s: %s %s", dsCriteria.getName(), mSolrIdentity, solrQuery.toString())); SolrResponseBuilder solrResponseBuilder = createResponseBuilder(); QueryResponse queryResponse = queryExecute(solrQuery); solrDocument = solrResponseBuilder.extract(queryResponse); DataBag headerBag = Solr.getHeader(solrDocument); if (headerBag != null) headerBag.setValueByName("collection_name", getCollectionName()); String requestHandler = solrQuery.getRequestHandler(); solrResponseBuilder.updateHeader(mBaseSolrURL, solrQuery.getQuery(), requestHandler, solrQuery.getStart(), solrQuery.getRows()); appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART); return solrDocument; }
From source file:com.nridge.ds.solr.SolrDS.java
License:Open Source License
/** * Returns a <i>Document</i> representation of the documents * that match the <i>DSCriteria</i> specified in the parameter. * <p>/*from w w w. j a v a 2 s. co m*/ * <b>Note:</b> Depending on the size of the content source * behind this data source and the criteria specified, this * method could consume large amounts of heap memory. * Therefore, the developer is encouraged to use the alternative * method for fetch where an offset and limit parameter can be * specified. * </p> * * @param aDSCriteria Data source criteria. * * @return Document hierarchy representing all documents that * match the criteria in the content source. * * @throws com.nridge.core.base.ds.DSException Data source related exception. * * @see <a href="http://lucene.apache.org/solr/guide/7_6/common-query-parameters.html">Solr Common Query Parametersr</a> * @see <a href="https://lucene.apache.org/solr/guide/7_6/the-standard-query-parser.html">Solr Standard Query Parserr</a> */ @Override public Document fetch(DSCriteria aDSCriteria) throws DSException { Document solrDocument; Logger appLogger = mAppMgr.getLogger(this, "fetch"); appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER); initialize(); SolrQuery solrQuery = mSolrQueryBuilder.create(aDSCriteria); appLogger.debug(String.format("%s: %s %s", aDSCriteria.getName(), mSolrIdentity, solrQuery.toString())); SolrResponseBuilder solrResponseBuilder = createResponseBuilder(); QueryResponse queryResponse = queryExecute(solrQuery); solrDocument = solrResponseBuilder.extract(queryResponse); DataBag headerBag = Solr.getHeader(solrDocument); if (headerBag != null) headerBag.setValueByName("collection_name", getCollectionName()); String requestHandler = solrQuery.getRequestHandler(); Integer startPosition = solrQuery.getStart(); if (startPosition == null) startPosition = Solr.QUERY_OFFSET_DEFAULT; Integer totalRows = solrQuery.getRows(); if (totalRows == null) totalRows = Solr.QUERY_PAGESIZE_DEFAULT; solrResponseBuilder.updateHeader(mBaseSolrURL, solrQuery.getQuery(), requestHandler, startPosition, totalRows); if (Solr.isCriteriaParentChild(aDSCriteria)) { SolrParentChild solrParentChild = new SolrParentChild(mAppMgr, this); solrParentChild.expand(solrDocument, aDSCriteria); } appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART); return solrDocument; }
From source file:com.villemos.ispace.solr.SolrProducer.java
License:Open Source License
/** * Retrieves a number of entries from the repository, based on the configured * query. //from ww w . j a va 2 s . com * * @param exchange * @throws SolrServerException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws RemoteException */ protected void retrieve(Exchange exchange) throws SolrServerException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, RemoteException { /** Configure the request. * * One keywords are supported * FROMLAST. Will be replaced with the timestamp of the last retrieval (initial is 0). */ String queryString = endpoint.getQuery(); queryString = queryString.replaceAll("FROMLAST", Long.toString(lastRetrievalTime)); SolrQuery query = new SolrQuery(queryString); configureQuery(query); if (queryString.equals("*:*")) { query.setQueryType("basic"); } /** If we are asked for facets, then add the facets. */ if (endpoint.getFacets()) { query.setFacet(true); query.addFacetField(endpoint.getFacetField()); } /** Search and set result set. Notice that this will return the results upto the * configured number of rows. More results may thus be in the repository. */ /** Data is either returned as a batch contained in the body of the exchange, or as * a stream send to the callback object in the body. The exchange header field * 'solr.stream' is used to indicate which delivery mode is used. */ if (endpoint.isStream() == false) { QueryResponse response = endpoint.getServer().query(query); if (response.getStatus() != 0) { log.error( "Failed to execute retrieval request. Failed with status '" + response.getStatus() + "'."); } exchange.getOut().getHeaders().put(SolrOptions.count, (int) response.getResults().getNumFound()); if (endpoint.isCount() == false) { ResultSet results; try { results = Utilities.getResultSet(response, query.getRows(), queryString); exchange.getOut().setBody(results); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } else { /***/ Statistics statistics = new Statistics(); int maxNumberOfHits = query.getRows(); /** When streaming, we retrieve in chunks. */ int streamBatchSize = 100 > maxNumberOfHits ? maxNumberOfHits : 100; query.setRows(streamBatchSize); Integer index = query.getStart() == null ? 0 : query.getStart(); QueryResponse response = endpoint.getServer().query(query); if (response.getStatus() != 0) { log.error( "Failed to execute retrieval request. Failed with status '" + response.getStatus() + "'."); } int numberOfHits = (int) response.getResults().getNumFound(); if (numberOfHits > maxNumberOfHits) { numberOfHits = maxNumberOfHits; } boolean deliverOnes = false; do { ResultSet set; try { set = Utilities.getResultSet(response, maxNumberOfHits, queryString); /** Update the statistics. */ statistics.maxScore = statistics.maxScore > set.statistics.maxScore ? statistics.maxScore : set.statistics.maxScore; statistics.totalFound = set.statistics.totalFound; statistics.totalRequested = set.statistics.totalRequested; statistics.queryTime += set.statistics.queryTime; statistics.totalReturned += set.statistics.totalReturned; /** Deliver latest statistics. */ Exchange newExchange = new DefaultExchange(endpoint.getCamelContext()); newExchange.getIn().setBody(statistics); endpoint.getCamelContext().createProducerTemplate().send("direct:results", newExchange); /** Deliver the data that is the same for each sequential query, i.e. facets and suggestions. */ if (deliverOnes == false) { for (Facet facet : set.facets) { newExchange = new DefaultExchange(endpoint.getCamelContext()); newExchange.getIn().setBody(facet); endpoint.getCamelContext().createProducerTemplate().send("direct:results", newExchange); } for (Suggestion suggestion : set.suggestions) { newExchange = new DefaultExchange(endpoint.getCamelContext()); newExchange.getIn().setBody(suggestion); endpoint.getCamelContext().createProducerTemplate().send("direct:results", newExchange); } deliverOnes = true; } /** Deliver the found information objects. */ for (Object document : set.informationobjects) { newExchange = new DefaultExchange(endpoint.getCamelContext()); newExchange.getIn().setBody(document); endpoint.getCamelContext().createProducerTemplate().send("direct:results", newExchange); } index += streamBatchSize; if (numberOfHits > index && statistics.totalReturned < statistics.totalFound) { query.setStart(index); long numberMissing = numberOfHits - statistics.totalReturned; if (numberMissing < streamBatchSize) { query.setRows((int) numberMissing); } response = endpoint.getServer().query(query); } else { break; } } catch (ClassNotFoundException e) { e.printStackTrace(); } } while (true); } }
From source file:de.dlr.knowledgefinder.webapp.webservice.service.impl.KnowledgeFinderServiceImpl.java
License:Apache License
@com.liferay.portal.security.ac.AccessControlled(guestAccessEnabled = true, hostAllowedValidationEnabled = false) public Map<String, Object> getDocuments(String query, String filterQuery, String fields, String start, String rows, String sort, String highlightFields) throws PortalException { User user = null;/*from ww w. j ava2 s. com*/ try { user = getGuestOrUser(); } catch (SystemException e2) { } AbstractSolrQueryFactory qFactory = SolrQueryFactoryMaker.createSolrQueryFactory(user); Map<String, Object> resultMap = new HashMap<String, Object>(); SolrClient client; String username; String password; try { client = SolrConnection.INSTANCE.getClient(); username = SolrConnection.INSTANCE.getUsername(); password = SolrConnection.INSTANCE.getPassword(); } catch (IOException e1) { throw new PortalException(e1); } SolrQuery solrQuery = qFactory.createQuery(query, new String[] { filterQuery }, new String[] { fields }, null, start, rows, new String[] { sort }, new String[] { highlightFields }, null); logger.info("getDocuments:" + solrQuery.toString()); QueryResponse response; try { QueryRequest request = new QueryRequest(solrQuery); if (username != null && password != null) request.setBasicAuthCredentials(username, password); response = request.process(client); logger.debug("getDocuments - result:" + response.toString()); Map<String, Map<String, List<String>>> hl = response.getHighlighting(); SolrDocumentList docs = response.getResults(); replaceHightlighting(docs, hl); resultMap.put("docs", docs); resultMap.put("numFound", response.getResults().getNumFound()); resultMap.put("start", solrQuery.getStart()); resultMap.put("rows", solrQuery.getRows()); } catch (SolrServerException e) { logger.error(e.getMessage()); throw new PortalException(e); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return resultMap; }
From source file:eu.europeana.core.BeanQueryModelFactory.java
License:EUPL
@Override public QueryResponse getSolrResponse(SolrQuery solrQuery, boolean isBriefDoc, Map<String, String[]> params) throws EuropeanaQueryException { // add bean to ??? // since we make a defensive copy before the start is decremented we must do it here if (solrQuery.getStart() != null && solrQuery.getStart() > 0) { solrQuery.setStart(solrQuery.getStart() - 1); }//from www .ja v a 2 s . c om // set facets if (isBriefDoc) { // only show spelling-suggestion on the first result page if ((solrQuery.getStart() == null || solrQuery.getStart() == 0) && solrQuery.getFilterQueries() == null) { // give spelling suggestions solrQuery.setParam("spellcheck", true); solrQuery.setParam("spellcheck.collate", true); solrQuery.setParam("spellcheck.extendedResults", true); solrQuery.setParam("spellcheck.onlyMorePopular", true); // solrQuery.setParam("spellcheck.count", "4"); } solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); //solrQuery.setFacetLimit(100); solr default is 100 so doesn't need to be set explicitly if (solrQuery.getRows() == null) { solrQuery.setRows(12); } solrQuery.addFacetField(ThemeFilter.getTheme().getRecordDefinition().getFacetFieldStrings()); // todo now hard-coded but these values must be retrieved from the RecordDefinition later if (solrQuery.getFields() == null) { solrQuery.setFields( "europeana_uri,dc_title,europeana_object,dc_creator,europeana_year,europeana_provider," + "europeana_dataProvider,europeana_language,europeana_type,dc_description,dc_type"); // solrQuery.setFields("*,score"); // solrQuery.setFields(metadataModel.getRecordDefinition().getFieldStrings()); } if (solrQuery.getQueryType().equalsIgnoreCase(QueryType.SIMPLE_QUERY.toString())) { solrQuery.setQueryType(queryAnalyzer .findSolrQueryType(solrQuery.getQuery(), ThemeFilter.getTheme().getRecordDefinition()) .toString()); } } SolrQuery dCopy = addHiddenQueryFilters(solrQuery, params); return getSolrResponseFromServer(dCopy, false); }