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