List of usage examples for org.apache.solr.client.solrj SolrQuery SolrQuery
public SolrQuery()
From source file:com.comm.sr.common.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(SolrCommonQuery query_) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("collection", query_.getCollectionName()); SubQuery query = query_.getSubQuery(); if (query == null) { return solrQuery; }//w w w . j a v a 2 s . c o m StringBuffer solrQueryBuffer = new StringBuffer(); makeFinalSolrQuery(query, solrQueryBuffer); int pageNum = query_.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1; } else { pageNum = query_.getPageNum(); } List<SortItem> sortItems = query_.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (String functionQueryString : query_.getFunctionQuerysList()) { solrQueryBuffer.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } if (solrQueryBuffer.toString().contains("AND")) { int and = solrQueryBuffer.lastIndexOf("AND"); solrQueryBuffer.replace(and, and + 3, ""); } if (solrQueryBuffer.toString().trim().length() == 0) { solrQueryBuffer.append("*:*"); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } for (String fl : query_.getFls()) { solrQuery.addField(fl); } int pageSize = query_.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query_.getLocationPoint(); Double distance = query_.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } LOGGER.info(solrQueryBuffer.toString()); solrQuery.setQuery(solrQueryBuffer.toString()); return solrQuery; }
From source file:com.comm.sr.service.solr.AdvancedSolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(SubQuery query) { SolrQuery solrQuery = new SolrQuery(); if (query == null) { return solrQuery; }/* w w w . j a v a2 s. c o m*/ StringBuffer solrQueryBuffer = new StringBuffer(); makeFinalSolrQuery(query, solrQueryBuffer); LOGGER.info(solrQueryBuffer.toString()); return solrQuery; }
From source file:com.comm.sr.service.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(CommonQuery query) { SolrQuery solrQuery = new SolrQuery(); StringBuilder queryStr = new StringBuilder(); StringBuilder filterQueryStr = new StringBuilder(); int pageNum = query.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1;/* w ww .j ava 2 s .c o m*/ } else { pageNum = query.getPageNum(); } List<QueryItem> queryItems = query.getQueryItems(); if (queryItems == null) { queryItems = Lists.newArrayList(); } List<SortItem> sortItems = query.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (QueryItem queryItem : queryItems) { if (queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { filterQueryStr.append(temp + " AND "); } } if (!queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { queryStr.append(temp + " AND "); } } } for (String functionQueryString : query.getFunctionQuerysList()) { queryStr.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } // check if final queryStr is empty if (queryStr.toString().trim().length() == 0) { queryStr.append("*:*"); } // delete last AND if (queryStr.toString().contains("AND")) { int and = queryStr.lastIndexOf("AND"); queryStr.replace(and, and + 3, ""); } if (filterQueryStr.toString().contains("AND")) { int and = filterQueryStr.lastIndexOf("AND"); filterQueryStr.replace(and, and + 3, ""); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } solrQuery.setQuery(queryStr.toString()); if (filterQueryStr.toString().length() != 0) { solrQuery.setFilterQueries(filterQueryStr.toString()); } LOGGER.debug("final queryStr is:" + queryStr.toString() + ""); LOGGER.debug("filter queryStr is:" + filterQueryStr.toString() + ""); // //only response userID,score // solrQuery.setFields("userID","score"); for (String fl : query.getFls()) { solrQuery.addField(fl); } int pageSize = query.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query.getLocationPoint(); Double distance = query.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } return solrQuery; }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
public static <T extends Serializable> IndexResult<T> find(SolrClient index, Class<T> classToRetrieve, Filter filter, Sorter sorter, Sublist sublist, Facets facets) throws GenericException, RequestNotValidException { IndexResult<T> ret;//from ww w .j av a 2 s. c om SolrQuery query = new SolrQuery(); query.setQuery(parseFilter(filter)); query.setSorts(parseSorter(sorter)); query.setStart(sublist.getFirstElementIndex()); query.setRows(sublist.getMaximumElementCount()); parseAndConfigureFacets(facets, query); try { QueryResponse response = index.query(getIndexName(classToRetrieve), query); ret = queryResponseToIndexResult(response, classToRetrieve, facets); } catch (SolrServerException | IOException | org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException e) { String message = e.getMessage(); String bodytag = "<body>"; if (message != null && message.contains(bodytag)) { message = message.substring(message.indexOf(bodytag) + bodytag.length(), message.indexOf("</body>")); message = message.replaceAll("\\<[^>]*?>", ""); } throw new GenericException("Could not query index, message: " + message, e); } return ret; }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
public static <T extends Serializable> IndexResult<T> find(SolrClient index, Class<T> classToRetrieve, Filter filter, Sorter sorter, Sublist sublist, Facets facets, RodaUser user, boolean showInactive) throws GenericException, RequestNotValidException { IndexResult<T> ret;// ww w . j av a 2 s . c o m SolrQuery query = new SolrQuery(); query.setQuery(parseFilter(filter)); query.setSorts(parseSorter(sorter)); query.setStart(sublist.getFirstElementIndex()); query.setRows(sublist.getMaximumElementCount()); parseAndConfigureFacets(facets, query); if (hasPermissionFilters(classToRetrieve)) { query.addFilterQuery(getFilterQueries(user, showInactive)); } try { QueryResponse response = index.query(getIndexName(classToRetrieve), query); ret = queryResponseToIndexResult(response, classToRetrieve, facets); } catch (SolrServerException | IOException e) { throw new GenericException("Could not query index", e); } return ret; }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
public static <T extends Serializable> IndexResult<T> find(SolrClient index, Class<T> classToRetrieve, String tableUUID, Filter filter, Sorter sorter, Sublist sublist, Facets facets) throws GenericException, RequestNotValidException { IndexResult<T> ret;/*from ww w . ja v a 2 s . co m*/ SolrQuery query = new SolrQuery(); query.setQuery(parseFilter(filter)); query.setSorts(parseSorter(sorter)); query.setStart(sublist.getFirstElementIndex()); query.setRows(sublist.getMaximumElementCount()); parseAndConfigureFacets(facets, query); try { QueryResponse response = index.query(getTableCollectionName(tableUUID), query); ret = queryResponseToIndexResult(response, classToRetrieve, facets); } catch (SolrServerException | IOException e) { throw new GenericException("Could not query index", e); } return ret; }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
public static InputStream findCSV(SolrClient index, String collection, Filter filter, Sorter sorter, Sublist sublist, List<String> fields) throws GenericException, RequestNotValidException { SolrQuery query = new SolrQuery(); query.setQuery(parseFilter(filter)); query.setSorts(parseSorter(sorter)); if (sublist != null) { query.setStart(sublist.getFirstElementIndex()); query.setRows(sublist.getMaximumElementCount()); }/*from w w w. j av a2s.c o m*/ query.setFields(fields.toArray(new String[0])); LOGGER.debug("CSV export query object: " + query.toString()); LOGGER.debug("CSV export query: " + query.toQueryString()); try { QueryRequest queryRequest = new QueryRequest(query); queryRequest.setResponseParser(new InputStreamResponseParser("csv")); QueryResponse response = queryRequest.process(index, collection); Object stream = response.getResponse().get("stream"); if (stream instanceof InputStream) { return (InputStream) stream; } else { throw new GenericException( "Result was not an input stream. Its string representation was: " + stream.toString()); } } catch (SolrServerException | IOException e) { throw new GenericException("Could not query index", e); } }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
public static String getSolrQuery(Filter filter, Sorter sorter, Sublist sublist, Facets facets) throws GenericException, RequestNotValidException { SolrQuery query = new SolrQuery(); query.setQuery(parseFilter(filter)); // query.setSorts(parseSorter(sorter)); query.setStart(sublist.getFirstElementIndex()); query.setRows(sublist.getMaximumElementCount()); // parseAndConfigureFacets(facets, query); return query.toQueryString(); }
From source file:com.digitalpebble.storm.crawler.solr.persistence.SolrSpout.java
License:Apache License
private void populateBuffer() { // TODO Sames as the ElasticSearchSpout? // TODO Use the cursor feature? // https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results SolrQuery query = new SolrQuery(); query.setQuery("*:*").addFilterQuery("nextFetchDate:[* TO NOW]").setStart(lastStartOffset) .setRows(this.bufferSize); if (StringUtils.isNotBlank(diversityField)) { query.addFilterQuery(String.format("{!collapse field=%s}", diversityField)); query.set("expand", "true").set("expand.rows", diversityBucketSize); }/*from w w w . j av a 2 s .com*/ try { QueryResponse response = connection.getClient().query(query); SolrDocumentList docs = new SolrDocumentList(); if (StringUtils.isNotBlank(diversityField)) { // Add the main documents collapsed by the CollapsingQParser // plugin docs.addAll(response.getResults()); Map<String, SolrDocumentList> expandedResults = response.getExpandedResults(); for (String key : expandedResults.keySet()) { docs.addAll(expandedResults.get(key)); } } else { docs = response.getResults(); } int numhits = response.getResults().size(); // no more results? if (numhits == 0) lastStartOffset = 0; else lastStartOffset += numhits; for (SolrDocument doc : docs) { String url = (String) doc.get("url"); // is already being processed - skip it! if (beingProcessed.containsKey(url)) continue; Metadata metadata = new Metadata(); String mdAsString = (String) doc.get("metadata"); // get the serialized metadata information if (mdAsString != null) { // parse the string and generate the MD accordingly // url.path: http://www.lemonde.fr/ // depth: 1 String[] kvs = mdAsString.split("\n"); for (String pair : kvs) { String[] kv = pair.split(": "); if (kv.length != 2) { LOG.info("Invalid key value pair {}", pair); continue; } metadata.addValue(kv[0], kv[1]); } } buffer.add(new Values(url, metadata)); } } catch (Exception e) { LOG.error("Can't query Solr: {}", e); } }
From source file:com.digitalpebble.stormcrawler.solr.persistence.SolrSpout.java
License:Apache License
private void populateBuffer() { // TODO Sames as the ElasticSearchSpout? // TODO Use the cursor feature? // https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results SolrQuery query = new SolrQuery(); query.setQuery("*:*").addFilterQuery("nextFetchDate:[* TO NOW]").setStart(lastStartOffset) .setRows(this.bufferSize); if (StringUtils.isNotBlank(diversityField)) { query.addFilterQuery(String.format("{!collapse field=%s}", diversityField)); query.set("expand", "true").set("expand.rows", diversityBucketSize); }//from w w w .j av a 2s . co m try { QueryResponse response = connection.getClient().query(query); SolrDocumentList docs = new SolrDocumentList(); if (StringUtils.isNotBlank(diversityField)) { // Add the main documents collapsed by the CollapsingQParser // plugin docs.addAll(response.getResults()); Map<String, SolrDocumentList> expandedResults = response.getExpandedResults(); for (String key : expandedResults.keySet()) { docs.addAll(expandedResults.get(key)); } } else { docs = response.getResults(); } int numhits = response.getResults().size(); // no more results? if (numhits == 0) lastStartOffset = 0; else lastStartOffset += numhits; String prefix = mdPrefix.concat("."); for (SolrDocument doc : docs) { String url = (String) doc.get("url"); // is already being processed - skip it! if (beingProcessed.containsKey(url)) continue; Metadata metadata = new Metadata(); Iterator<String> keyIterators = doc.getFieldNames().iterator(); while (keyIterators.hasNext()) { String key = keyIterators.next(); if (key.startsWith(prefix)) { Collection<Object> values = doc.getFieldValues(key); key = StringUtils.replace(key, prefix, "", 1); Iterator<Object> valueIterator = values.iterator(); while (valueIterator.hasNext()) { String value = (String) valueIterator.next(); metadata.addValue(key, value); } } } buffer.add(new Values(url, metadata)); } } catch (Exception e) { LOG.error("Can't query Solr: {}", e); } }