List of usage examples for org.apache.solr.client.solrj SolrQuery getStart
public Integer getStart()
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: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)./*www .j a v a 2 s . c o m*/ * <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>/*w ww . j ava2 s. c o 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. /*w w w.j ava 2 s.co m*/ * * @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 w w w. j a v a 2s .c om*/ 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 List<?> getDocIdList(Map<String, String[]> params, Locale locale) throws EuropeanaQueryException, SolrServerException { SolrQuery solrQuery = createFromQueryParams(params, locale); Integer start = solrQuery.getStart(); if (start > 1) { solrQuery.setStart(start - 2);//w ww.j a v a 2s . co m } solrQuery.setRows(3); solrQuery.setFields("europeana_uri"); // Fetch results from server final PortalTheme theme = ThemeFilter.getTheme(); if (theme != null) { solrServer.setBaseURL(theme.getSolrSelectUrl()); } QueryResponse queryResponse = solrServer.query(solrQuery); // fetch beans return getDocIdsFromQueryResponse(queryResponse); }
From source file:eu.europeana.core.BeanQueryModelFactory.java
License:EUPL
private List<? extends BriefDoc> addIndexToBriefDocList(SolrQuery solrQuery, List<? extends BriefDoc> briefDocList, QueryResponse solrResponse) { Boolean debug = solrQuery.getBool("debugQuery"); Map<String, String> explainMap = solrResponse.getExplainMap(); Integer start = solrQuery.getStart(); int index = start == null ? 1 : start + 1; for (BriefDoc briefDoc : briefDocList) { briefDoc.setIndex(index++);//from w w w.j a v a 2 s . co m briefDoc.setFullDocUrl(createFullDocUrl(briefDoc.getId())); if (debug != null && debug) { briefDoc.setDebugQuery(explainMap.get(briefDoc.getId())); } } return briefDocList; }
From source file:eu.europeana.core.BeanQueryModelFactory.java
License:EUPL
private QueryResponse getSolrResponseFromServer(SolrQuery solrQuery, boolean decrementStart) throws EuropeanaQueryException { if (solrQuery.getStart() != null && solrQuery.getStart() < 0) { solrQuery.setStart(0);// w ww .j a v a 2 s . c om log.warn("Solr Start cannot be negative"); } // solr query is 0 based if (decrementStart && solrQuery.getStart() != null && solrQuery.getStart() > 0) { solrQuery.setStart(solrQuery.getStart() - 1); } QueryResponse queryResponse; // todo: add view limitation to query try { final PortalTheme theme = ThemeFilter.getTheme(); if (theme != null) { solrServer.setBaseURL(theme.getSolrSelectUrl()); } queryResponse = solrServer.query(solrQuery); } catch (SolrException e) { log.error("unable to execute SolrQuery", e); throw new EuropeanaQueryException(QueryProblem.MALFORMED_QUERY.toString(), e); } catch (SolrServerException e) { //todo determine which errors the SolrServer can throw log.error("Unable to fetch result", e); if (e.getMessage().equalsIgnoreCase("Error executing query")) { throw new EuropeanaQueryException(QueryProblem.MALFORMED_QUERY.toString(), e); } else { throw new EuropeanaQueryException(QueryProblem.SOLR_UNREACHABLE.toString(), e); } } return queryResponse; }
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); }/* w w w. j av a2s . 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); }