List of usage examples for org.apache.solr.client.solrj SolrQuery setStart
public SolrQuery setStart(Integer start)
From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java
License:Open Source License
/** * Prepares a {@link SolrQuery} with the parameters passed in * @param query//from w w w. j av a 2 s .c om * @param sort * @param pageSize * @param pageNumber * @param selectedFacets * @return A {@link SolrQuery} that can be customised before passing to a {@link SolrServer} */ protected SolrQuery prepareQuery(String query, String sort, Integer pageSize, Integer pageNumber, Map<String, String> selectedFacets) { SolrQuery solrQuery = new SolrQuery(); if (query != null && !query.trim().equals("")) { String searchString = null; if (query.indexOf(":") != -1) { searchString = query; } else { // replace spaces with '+' so that we search on terms searchString = query.trim().replace(" ", "+"); solrQuery.set("defType", "edismax"); solrQuery.set("qf", "searchable.label_sort searchable.solrsummary_t"); } solrQuery.setQuery(searchString); } else { solrQuery.set("defType", "edismax"); solrQuery.set("qf", "searchable.label_sort searchable.solrsummary_t"); solrQuery.setQuery("*:*"); } if (sort != null && sort.length() != 0) { for (String singleSort : sort.split(",")) { if (singleSort.equals("_asc")) { //Do nothing } else if (singleSort.endsWith("_asc")) { String sortField = singleSort.substring(0, singleSort.length() - 4); solrQuery.addSortField(sortField, SolrQuery.ORDER.asc); } else if (singleSort.endsWith("_desc")) { String sortField = singleSort.substring(0, singleSort.length() - 5); solrQuery.addSortField(sortField, SolrQuery.ORDER.desc); } } } if (pageSize != null) { solrQuery.setRows(pageSize); if (pageNumber != null) { solrQuery.setStart(pageSize * pageNumber); } } if (selectedFacets != null && !selectedFacets.isEmpty()) { for (String facetName : selectedFacets.keySet()) { String facetValue = selectedFacets.get(facetName); if (StringUtils.isNotEmpty(facetValue)) { solrQuery.addFilterQuery(facetName + ":" + selectedFacets.get(facetName)); } else {//Subtract/Exclude documents with any value for the facet solrQuery.addFilterQuery("-" + facetName + ":[* TO *]"); } } } return solrQuery; }
From source file:org.entrystore.repository.util.SolrSupport.java
License:Apache License
private long sendQueryForEntryURIs(SolrQuery query, Set<URI> result, SolrServer solrServer, int offset, int limit) { if (offset > -1) { query.setStart(offset); }/*from w ww .ja va 2 s .com*/ if (limit > -1) { query.setRows(limit); } long hits = -1; Date before = new Date(); QueryResponse r = null; try { r = solrServer.query(query); SolrDocumentList docs = r.getResults(); hits = docs.getNumFound(); for (SolrDocument solrDocument : docs) { if (solrDocument.containsKey("uri")) { String uri = (String) solrDocument.getFieldValue("uri"); if (uri != null) { result.add(URI.create(uri)); } } } } catch (SolrServerException e) { log.error(e.getMessage()); } log.info("Solr query took " + (new Date().getTime() - before.getTime()) + " ms"); return hits; }
From source file:org.gbif.occurrence.download.file.OccurrenceFileWriterJob.java
/** * Executes the job.query and creates a data file that will contains the records from job.from to job.to positions. *///from w w w . j a va2 s . co m @Override public Result call() throws IOException { // Creates a closer Closer closer = Closer.create(); // Calculates the amount of output records final int nrOfOutputRecords = fileJob.getTo() - fileJob.getFrom(); Map<UUID, Long> datasetUsages = Maps.newHashMap(); // Creates a search request instance using the search request that comes in the fileJob SolrQuery solrQuery = createSolrQuery(fileJob.getQuery()); try { ICsvMapWriter intCsvWriter = closer.register( new CsvMapWriter(new FileWriterWithEncoding(fileJob.getInterpretedDataFile(), Charsets.UTF_8), CsvPreference.TAB_PREFERENCE)); ICsvMapWriter verbCsvWriter = closer.register( new CsvMapWriter(new FileWriterWithEncoding(fileJob.getVerbatimDataFile(), Charsets.UTF_8), CsvPreference.TAB_PREFERENCE)); ICsvBeanWriter multimediaCsvWriter = closer.register( new CsvBeanWriter(new FileWriterWithEncoding(fileJob.getMultimediaDataFile(), Charsets.UTF_8), CsvPreference.TAB_PREFERENCE)); int recordCount = 0; while (recordCount < nrOfOutputRecords) { solrQuery.setStart(fileJob.getFrom() + recordCount); // Limit can't be greater than the maximum number of records assigned to this job solrQuery .setRows(recordCount + LIMIT > nrOfOutputRecords ? nrOfOutputRecords - recordCount : LIMIT); final QueryResponse response = solrServer.query(solrQuery); for (Iterator<SolrDocument> itResults = response.getResults().iterator(); itResults .hasNext(); recordCount++) { final Integer occKey = (Integer) itResults.next() .getFieldValue(OccurrenceSolrField.KEY.getFieldName()); // Writes the occurrence record obtained from HBase as Map<String,Object>. org.apache.hadoop.hbase.client.Result result = occurrenceMapReader.get(occKey); Map<String, String> occurrenceRecordMap = OccurrenceMapReader.buildOccurrenceMap(result); Map<String, String> verbOccurrenceRecordMap = OccurrenceMapReader .buildVerbatimOccurrenceMap(result); if (occurrenceRecordMap != null) { incrementDatasetUsage(datasetUsages, occurrenceRecordMap); intCsvWriter.write(occurrenceRecordMap, INT_COLUMNS); verbCsvWriter.write(verbOccurrenceRecordMap, VERB_COLUMNS); writeMediaObjects(multimediaCsvWriter, result, occKey); } else { LOG.error(String.format("Occurrence id %s not found!", occKey)); } } } } catch (Exception e) { Throwables.propagate(e); } finally { closer.close(); // Unlock the assigned lock. lock.unlock(); LOG.info("Lock released, job detail: {} ", fileJob.toString()); } return new Result(fileJob, datasetUsages); }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
/** * Builds the SolrJ query with support of subset of fields, limit/offset, sorting, OGC filter * encoding and viewParams <br>//from ww w. j ava2 s. c om * The SOLR query always need the order by PK field to enable pagination and efficient data * retrieving <br> * Currently only additional "q" and "fq" SOLR parameters can be passed using vireParams, this * conditions are added in AND with others * * @param featureType the feature type to query * @param q the OGC query to translate in SOLR request * * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS} * */ protected SolrQuery select(SimpleFeatureType featureType, Query q) { SolrQuery query = new SolrQuery(); query.setParam("omitHeader", true); try { // Column names if (q.getPropertyNames() != null) { for (String prop : q.getPropertyNames()) { query.addField(prop); } } query.setQuery("*:*"); // Encode limit/offset, if necessary if (q.getStartIndex() != null && q.getStartIndex() >= 0) { query.setStart(q.getStartIndex()); } if (q.getMaxFeatures() > 0) { query.setRows(q.getMaxFeatures()); } // Sort ORDER naturalSortOrder = ORDER.asc; if (q.getSortBy() != null) { for (SortBy sort : q.getSortBy()) { if (sort.getPropertyName() != null) { query.addSort(sort.getPropertyName().getPropertyName(), sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc); } else { naturalSortOrder = sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc; } } } // Always add natural sort by PK to support pagination query.addSort(getPrimaryKey(featureType.getTypeName()).getName(), naturalSortOrder); // Encode OGC filer FilterToSolr f2s = initializeFilterToSolr(featureType); String fq = this.field + ":" + featureType.getTypeName(); Filter simplified = SimplifyingFilterVisitor.simplify(q.getFilter()); String ffq = f2s.encodeToString(simplified); if (ffq != null && !ffq.isEmpty()) { fq = fq + " AND " + ffq; } query.setFilterQueries(fq); // Add viewpPrams addViewparams(q, query); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } return query; }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
/** * Builds the SolrJ count query with support of limit/offset, OGC filter encoding and viewParams <br> * Currently only additional "q" and "fq" SOLR parameters can be passed using viewParams, this * conditions are added in AND with others * /* ww w . j a v a2s . c om*/ * @param featureType the feature type to query * @param q the OGC query to translate in SOLR request * * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS} * */ protected SolrQuery count(SimpleFeatureType featureType, Query q) { SolrQuery query = new SolrQuery(); query.setParam("omitHeader", true); query.setQuery("*:*"); query.setFields(this.getPrimaryKey(featureType.getName().getLocalPart()).getName()); try { // Encode limit/offset, if necessary if (q.getStartIndex() != null && q.getStartIndex() >= 0) { query.setStart(q.getStartIndex()); } query.setRows(0); // Encode OGC filer FilterToSolr f2s = initializeFilterToSolr(featureType); String fq = this.field + ":" + featureType.getTypeName(); String ffq = f2s.encodeToString(q.getFilter()); if (ffq != null && !ffq.isEmpty()) { fq = fq + " AND " + ffq; } query.setFilterQueries(fq); // Add viewparams parameters addViewparams(q, query); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } return query; }
From source file:org.geotools.data.solr.SolrFeatureReader.java
License:Open Source License
private String getCursorMarkForStart(HttpSolrServer server, SolrQuery solrQuery) throws SolrServerException { Integer prevRows = solrQuery.getRows(); solrQuery.setRows(solrQuery.getStart()); solrQuery.setStart(0); solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, CursorMarkParams.CURSOR_MARK_START); QueryResponse rsp = server.query(solrQuery); if (this.solrDataStore.getLogger().isLoggable(Level.FINE)) { this.solrDataStore.getLogger().log(Level.FINE, "SOLR query done: " + solrQuery.toString()); }/* w w w . jav a 2 s. c o m*/ String nextC = rsp.getNextCursorMark(); solrQuery.setRows(prevRows); return nextC; }
From source file:org.gss_project.gss.server.ejb.ExternalAPIBean.java
License:Open Source License
/** * Performs the search on the solr server and returns the results */*from ww w . ja v a2 s. co m*/ * * @param userId * @param query * @param luceneQuery * @return a List of FileHeader objects */ public SearchResult search(Long userId, String query, int start, boolean luceneQuery) throws ObjectNotFoundException { if (userId == null) throw new ObjectNotFoundException("No user specified"); if (query == null) throw new ObjectNotFoundException("No query specified"); final int maxRows = getConfiguration().getInt("searchResultsPerPage", 25); List<FileHeader> result = new ArrayList<FileHeader>(); try { CommonsHttpSolrServer solr = new CommonsHttpSolrServer(getConfiguration().getString("solr.url")); List<Group> groups = dao.getGroupsContainingUser(userId); String escapedQuery = luceneQuery ? normalizeSearchQuery(query) : escapeCharacters(normalizeSearchQuery(query)); String constructedQuery = escapedQuery + " AND (public: true OR ureaders: " + userId; if (!groups.isEmpty()) { constructedQuery += " OR ("; for (int i = 0; i < groups.size(); i++) { Group g = groups.get(i); constructedQuery += "greaders :" + g.getId(); if (i < groups.size() - 1) constructedQuery += " OR "; } constructedQuery += ")"; } constructedQuery += ")"; SolrQuery solrQuery = new SolrQuery(constructedQuery); solrQuery.setRows(maxRows); if (start > 0) solrQuery.setStart(start); QueryResponse response = solr.query(solrQuery); SolrDocumentList results = response.getResults(); if (results.getNumFound() > maxRows && start < 0) { solrQuery.setRows(Integer.valueOf((int) results.getNumFound())); response = solr.query(solrQuery); results = response.getResults(); } for (SolrDocument d : results) { Long id = Long.valueOf((String) d.getFieldValue("id")); try { FileHeader f = dao.getEntityById(FileHeader.class, id); result.add(f); } catch (ObjectNotFoundException e) { logger.warn("Search result id " + id + " cannot be found", e); } } return new SearchResult(results.getNumFound(), result); } catch (MalformedURLException e) { logger.error(e); throw new EJBException(e); } catch (SolrServerException e) { logger.error(e); throw new EJBException(e); } }
From source file:org.intermine.api.searchengine.solr.SolrKeywordSearchHandler.java
License:GNU General Public License
private QueryResponse performSearch(InterMineAPI im, String queryString, Map<String, String> facetValues, List<Integer> ids, int offSet, int rowSize) { SolrClient solrClient = SolrClientManager.getClientInstance(im.getObjectStore()); QueryResponse resp = null;/*from w w w . j ava 2s . c o m*/ KeywordSearchPropertiesManager keywordSearchPropertiesManager = KeywordSearchPropertiesManager .getInstance(im.getObjectStore()); Vector<KeywordSearchFacetData> facets = keywordSearchPropertiesManager.getFacets(); Map<ClassDescriptor, Float> classBoost = keywordSearchPropertiesManager.getClassBoost(); List<String> fieldNames = getFieldNamesFromSolrSchema(solrClient); try { SolrQuery newQuery = new SolrQuery(); newQuery.setQuery(queryString); newQuery.setStart(offSet); newQuery.setRows(rowSize); newQuery.addField("score"); newQuery.addField("id"); newQuery.add("defType", "edismax"); for (KeywordSearchFacetData keywordSearchFacetData : facets) { newQuery.addFacetField("facet_" + keywordSearchFacetData.getField()); } // add faceting selections for (Map.Entry<String, String> facetValue : facetValues.entrySet()) { if (facetValue != null) { newQuery.addFilterQuery(facetValue.getKey() + ":" + facetValue.getValue()); } } //limiting the query based on search bag if (ids != null && !ids.isEmpty()) { for (int id : ids) { newQuery.addFilterQuery("id", Integer.toString(id)); } } String boostQuery = ""; for (Map.Entry<ClassDescriptor, Float> boostValue : classBoost.entrySet()) { if (boostValue != null) { boostQuery += "classname:" + boostValue.getKey().getUnqualifiedName() + "^" + boostValue.getValue() + " "; } } LOG.info("BoostQuery : " + boostQuery); String fieldListQuery = ""; for (String field : fieldNames) { fieldListQuery = fieldListQuery + field; if (field.endsWith("_raw")) { fieldListQuery = fieldListQuery + "^2.0"; } fieldListQuery = fieldListQuery + " "; } LOG.info("Field List Query : " + fieldListQuery); newQuery.add("bq", boostQuery); newQuery.add("qf", fieldListQuery); resp = solrClient.query(newQuery, SolrRequest.METHOD.POST); return resp; } catch (SolrServerException e) { LOG.error("Query performed on solr failed for search term : " + queryString, e); e.printStackTrace(); } catch (IOException e) { LOG.error("Query performed on solr failed for search term : " + queryString, e); e.printStackTrace(); } return resp; }
From source file:org.janusgraph.diskstorage.solr.SolrIndex.java
License:Apache License
@Override public Stream<String> query(IndexQuery query, KeyInformation.IndexRetriever information, BaseTransaction tx) throws BackendException { final String collection = query.getStore(); final String keyIdField = getKeyFieldId(collection); final SolrQuery solrQuery = new SolrQuery("*:*"); solrQuery.set(CommonParams.FL, keyIdField); final String queryFilter = buildQueryFilter(query.getCondition(), information.get(collection)); solrQuery.addFilterQuery(queryFilter); if (!query.getOrder().isEmpty()) { addOrderToQuery(solrQuery, query.getOrder()); }/* w w w .ja v a2 s. c om*/ solrQuery.setStart(0); if (query.hasLimit()) { solrQuery.setRows(Math.min(query.getLimit(), batchSize)); } else { solrQuery.setRows(batchSize); } return executeQuery(query.hasLimit() ? query.getLimit() : null, 0, collection, solrQuery, doc -> doc.getFieldValue(keyIdField).toString()); }
From source file:org.kimios.kernel.controller.impl.SolrSearchController.java
License:Open Source License
private SearchResponse quickSearchIds(Session session, String query, DMEntity entity, int start, int pageSize, String sortField, String sortDir) { String documentNameQuery = QueryBuilder.documentNameQuery(query); SolrQuery indexQuery = new SolrQuery(); ArrayList<String> filterQueries = new ArrayList<String>(); if (!getSecurityAgent().isAdmin(session.getUserName(), session.getUserSource())) { String aclQuery = QueryBuilder.buildAclQuery(session); filterQueries.add(aclQuery);/*ww w .j ava 2s.com*/ } if (entity != null) { DMEntity entityLoaded = dmsFactoryInstantiator.getDmEntityFactory().getEntity(entity.getUid()); String pathQuery = "DocumentParent:" + entityLoaded.getPath() + "/*"; filterQueries.add(pathQuery); } indexQuery.setFilterQueries(filterQueries.toArray(new String[] {})); if (sortField != null) { indexQuery.addSortField(sortField, SolrQuery.ORDER.valueOf((sortDir != null ? sortDir.toLowerCase() : "asc"))); } indexQuery.addSortField("score", SolrQuery.ORDER.desc); indexQuery.setQuery(documentNameQuery); if (start > -1 && pageSize > -1) { indexQuery.setStart(start); indexQuery.setRows(pageSize); } SearchResponse searchResponse = solrIndexManager.executeSolrQuery(indexQuery); return searchResponse; }