@Override public List<SolrDocument> getResponseDocuments(QueryResponse response) { List<SolrDocument> docs; if (response.getGroupResponse() == null) { docs = response.getResults(); } else { docs = new ArrayList<SolrDocument>(); GroupResponse gr = response.getGroupResponse(); for (GroupCommand gc : gr.getValues()) { for (Group g : gc.getValues()) { for (SolrDocument d : g.getResult()) { docs.add(d); } } } } return docs; }
private static void addStatsFromSolrResponseToJsonWriter(final QueryResponse response, final JsonWriter writer) throws IOException { writer.beginObject(); writer.name("stats_fields"); writer.beginObject(); for (Map.Entry<String,FieldStatsInfo> entry: response.getFieldStatsInfo().entrySet()) { FieldStatsInfo fsi = entry.getValue(); writer.name(entry.getKey()); writer.beginObject(); writer.name("min").value(fsi.getMin().toString()); writer.name("max").value(fsi.getMax().toString()); writer.name("count").value(fsi.getCount()); writer.name("missing").value(fsi.getMissing()); writer.name("sum").value(fsi.getSum().toString()); writer.name("mean").value(fsi.getMean().toString()); writer.name("sumOfSquares").value(fsi.getSumOfSquares()); writer.name("stddev").value(fsi.getStddev()); writer.endObject(); } writer.endObject(); writer.endObject(); }
writer.name("facet_queries"); writer.beginArray(); for (final Map.Entry<String,Integer> facetQuery : response.getFacetQuery().entrySet()){ writer.beginObject(); writer.name("facet").value(facetQuery.getKey()); for (final FacetField facetField : response.getFacetFields()){ writer.name(facetField.getName()); writer.beginArray(); for (final FacetField.Count count : facetField.getValues()) { writer.beginObject(); writer.name("facet").value(count.getName()); writer.name("count").value(count.getCount()); writer.endObject(); for (final RangeFacet rangeFacet : response.getFacetRanges()) { writer.name(rangeFacet.getName()); writer.beginArray(); final List<Count> list = rangeFacet.getCounts(); for (final Count count : list) { writer.beginObject(); writer.name("facet").value(count.getValue()); writer.name("count").value(count.getCount()); writer.endObject(); for (final IntervalFacet intervalFacet : response.getIntervalFacets()) { writer.name(intervalFacet.getField()); writer.beginArray(); for (final IntervalFacet.Count count : intervalFacet.getIntervals()) {
SolrDocumentList results = response.getResults(); if ((results != null) && (results.getNumFound() > 0)) { for (String field : results.get(0).getFieldNames()) { return checkStatus(response.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace();
QueryResponse response = solrClient.query(collection, solrQuery); if (logger.isDebugEnabled()) logger.debug("Executed query [{}] in {} ms", query.getQuery(), response.getElapsedTime()); int totalHits = response.getResults().size(); if (!query.hasLimit() && totalHits >= maxResults) { logger.warn("Query result set truncated to first [{}] elements for query: {}", maxResults, query); for (SolrDocument hit : response.getResults()) { double score = Double.parseDouble(hit.getFieldValue("score").toString()); result.add(new RawQuery.Result<String>(hit.getFieldValue(keyIdField).toString(), score));
@Override public void setFacetResults(Map<String, SearchFacetDTO> namedFacetMap, QueryResponse response) { if (response.getFacetFields() != null) { for (FacetField facet : response.getFacetFields()) { String facetFieldName = facet.getName(); SearchFacetDTO facetDTO = namedFacetMap.get(facetFieldName); for (Count value : facet.getValues()) { SearchFacetResultDTO resultDTO = new SearchFacetResultDTO(); resultDTO.setFacet(facetDTO.getFacet()); resultDTO.setQuantity(new Long(value.getCount()).intValue()); resultDTO.setValue(value.getName()); facetDTO.getFacetValues().add(resultDTO); if (response.getFacetQuery() != null) { for (Entry<String, Integer> entry : response.getFacetQuery().entrySet()) { String key = entry.getKey(); String facetFieldName = key.substring(0, key.indexOf("["));
@Override public void process(OutputStream out) throws IOException { IOUtils.write("<docs>", out, StandardCharsets.UTF_8); for (SolrDocument doc : response.getResults()) { final String xml = ClientUtils.toXML(toSolrInputDocument(doc)); IOUtils.write(xml, out, StandardCharsets.UTF_8); } IOUtils.write("</docs>", out, StandardCharsets.UTF_8); }
/** * Delete a record from the database. * * @param table * The name of the table * @param key * The record key of the record to delete. * @return Zero on success, a non-zero error code on error. See this class's description for a * discussion of error codes. */ @Override public Status delete(String table, String key) { try { UpdateResponse response; if (batchMode) { response = client.deleteById(table, key, commitTime); } else { response = client.deleteById(table, key); client.commit(table); } return checkStatus(response.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace(); } return Status.ERROR; }
@Override @SuppressWarnings("unchecked") public Map<String, SolrJSONFacet> resolveJSONFacetResponse(QueryResponse response) { Map<String, SolrJSONFacet> jsonFacetMap = new HashMap<>(); NamedList facetResponse = (NamedList) response.getResponse().get("facets"); if (facetResponse != null) { Iterator<Map.Entry<String, Object>> facetIterator = facetResponse.iterator(); while (facetIterator.hasNext()) { Map.Entry<String, Object> entry = facetIterator.next(); if (NamedList.class.isAssignableFrom(entry.getValue().getClass())) { jsonFacetMap.put(entry.getKey(), resolveJSONFacet((NamedList) entry.getValue())); } } } return jsonFacetMap; }
private static void createCollectionIfNotExists(CloudSolrClient client, Configuration config, String collection) throws IOException, SolrServerException, KeeperException, InterruptedException { if (!checkIfCollectionExists(client, collection)) { Integer numShards = config.get(NUM_SHARDS); Integer maxShardsPerNode = config.get(MAX_SHARDS_PER_NODE); Integer replicationFactor = config.get(REPLICATION_FACTOR); // Ideally this property used so a new configset is not uploaded for every single // index (collection) created in solr. // if a generic configSet is not set, make the configset name the same as the collection. // This was the default behavior before a default configSet could be specified String genericConfigSet = config.has(SOLR_DEFAULT_CONFIG) ? config.get(SOLR_DEFAULT_CONFIG):collection; CollectionAdminRequest.Create createRequest = new CollectionAdminRequest.Create(); createRequest.setConfigName(genericConfigSet); createRequest.setCollectionName(collection); createRequest.setNumShards(numShards); createRequest.setMaxShardsPerNode(maxShardsPerNode); createRequest.setReplicationFactor(replicationFactor); CollectionAdminResponse createResponse = createRequest.process(client); if (createResponse.isSuccess()) { logger.trace("Collection {} successfully created.", collection); } else { throw new SolrServerException(Joiner.on("\n").join(createResponse.getErrorMessages())); } } waitForRecoveriesToFinish(client, collection); }
SolrDocumentList results = response.getResults(); if ((results != null) && (results.getNumFound() > 0)) { for (String field : results.get(0).getFieldNames()) { return checkStatus(response.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace();
logger.debug("Executed query [{}] in {} ms", query.getCondition(), response.getElapsedTime()); int totalHits = response.getResults().size(); for (SolrDocument hit : response.getResults()) { result.add(hit.getFieldValue(keyIdField).toString());
/** * Delete a record from the database. * * @param table * The name of the table * @param key * The record key of the record to delete. * @return Zero on success, a non-zero error code on error. See this class's description for a * discussion of error codes. */ @Override public Status delete(String table, String key) { try { UpdateResponse response; if (batchMode) { response = client.deleteById(table, key, commitTime); } else { response = client.deleteById(table, key); client.commit(table); } return checkStatus(response.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace(); } return Status.ERROR; }
private String getFieldNameOfUniqueKey() { final SolrQuery solrQuery = new SolrQuery(); try { solrQuery.setRequestHandler("/schema/uniquekey"); final QueryRequest req = new QueryRequest(solrQuery); if (isBasicAuthEnabled()) { req.setBasicAuthCredentials(getUsername(), getPassword()); } return(req.process(getSolrClient()).getResponse().get("uniqueKey").toString()); } catch (SolrServerException | IOException e) { getLogger().error("Solr query to retrieve uniqueKey-field failed due to {}", new Object[]{solrQuery.toString(), e}, e); throw new ProcessException(e); } }
client.commit(table); return checkStatus(writeResponse.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace();
client.commit(table); return checkStatus(writeResponse.getStatus()); } catch (IOException | SolrServerException e) { e.printStackTrace();
client.commit(table); return checkStatus(response.getStatus());
client.commit(table); return checkStatus(response.getStatus());
getLogger().debug("Got {} response from Solr", new Object[]{response.getStatus()}); } catch (SolrException e) { error.set(e);
private void index(boolean isSolrCloud, String collection, Long commitWithin, String contentStreamPath, MultiMapSolrParams requestParams, List<SolrInputDocument> inputDocumentList) throws IOException, SolrServerException,SolrException { UpdateRequest request = new UpdateRequest(contentStreamPath); request.setParams(new ModifiableSolrParams()); // add the extra params, don't use 'set' in case of repeating params Iterator<String> paramNames = requestParams.getParameterNamesIterator(); while (paramNames.hasNext()) { String paramName = paramNames.next(); for (String paramValue : requestParams.getParams(paramName)) { request.getParams().add(paramName, paramValue); } } // specify the collection for SolrCloud if (isSolrCloud) { request.setParam(COLLECTION_PARAM_NAME, collection); } if (commitWithin != null && commitWithin > 0) { request.setParam(COMMIT_WITHIN_PARAM_NAME, commitWithin.toString()); } // if a username and password were provided then pass them for basic auth if (isBasicAuthEnabled()) { request.setBasicAuthCredentials(getUsername(), getPassword()); } request.add(inputDocumentList); UpdateResponse response = request.process(getSolrClient()); getLogger().debug("Got {} response from Solr", new Object[]{response.getStatus()}); inputDocumentList.clear(); }