List of usage examples for org.apache.solr.client.solrj SolrQuery addField
public SolrQuery addField(String field)
From source file:de.dlr.knowledgefinder.webapp.webservice.solr.query.AbstractSolrQueryFactory.java
License:Apache License
private void addDefaultFieldsToSolrQuery(SolrQuery solrQuery) { for (String f : getDefaultFields()) { solrQuery.addField(f.trim()); }//from ww w .ja v a 2 s . c om }
From source file:de.qaware.chronix.examples.exploration.ui.MainController.java
License:Apache License
private void queryTimeSeries() { Task task = new Task<Void>() { @Override//from w ww.j av a 2s.co m protected Void call() throws Exception { String queryString = query.getText().trim(); String fq = fqQuery.getText().trim(); Platform.runLater(() -> { chart.getData().clear(); rows.clear(); //Start the query chart.setTitle("Your Query was q=" + queryString + " fq=" + fq); }); SolrQuery query = new SolrQuery(queryString); query.addField("+data"); boolean hasFilterQueries = !fq.isEmpty(); if (hasFilterQueries) { query.addFilterQuery(fq); } long queryStart = System.currentTimeMillis(); List<MetricTimeSeries> result = chronix.stream(solr, query).collect(Collectors.toList()); long queryEnd = System.currentTimeMillis(); LOGGER.info("Query took: {} ms for {} points", (queryEnd - queryStart), size(result)); queryStart = System.currentTimeMillis(); result.forEach(ts -> { if (hasFilterQueries) { addFunctionsToTable(ts); } convertTsToSeries(ts); }); queryEnd = System.currentTimeMillis(); LOGGER.info("Charting took: {} ms", (queryEnd - queryStart)); return null; } }; new Thread(task).start(); }
From source file:edu.cornell.mannlib.vitro.webapp.searchengine.solr.SolrConversionUtils.java
License:Open Source License
/** * Convert from a SearchQuery to a SolrQuery, so the Solr server may execute * it./*from w ww. j a va 2 s .co m*/ */ @SuppressWarnings("deprecation") static SolrQuery convertToSolrQuery(SearchQuery query) { SolrQuery solrQuery = new SolrQuery(query.getQuery()); solrQuery.setStart(query.getStart()); int rows = query.getRows(); if (rows >= 0) { solrQuery.setRows(rows); } for (String fieldToReturn : query.getFieldsToReturn()) { solrQuery.addField(fieldToReturn); } Map<String, Order> sortFields = query.getSortFields(); for (String sortField : sortFields.keySet()) { solrQuery.addSortField(sortField, convertToSolrOrder(sortFields.get(sortField))); } for (String filter : query.getFilters()) { solrQuery.addFilterQuery(filter); } if (!query.getFacetFields().isEmpty()) { solrQuery.setFacet(true); } for (String facetField : query.getFacetFields()) { solrQuery.addFacetField(facetField); } int facetLimit = query.getFacetLimit(); if (facetLimit >= 0) { solrQuery.setFacetLimit(facetLimit); } int minCount = query.getFacetMinCount(); if (minCount >= 0) { solrQuery.setFacetMinCount(minCount); } return solrQuery; }
From source file:edu.unc.lib.dl.cdr.services.rest.ContainerDataFileChecksumsController.java
License:Apache License
@RequestMapping(value = "/edit/fileinfo/{pid}") public void get(@PathVariable("pid") String pid, HttpServletResponse response) throws SolrServerException, IOException { String fid = pid.replace(":", "_"); response.addHeader("Content-Disposition", "attachment; filename=\"" + fid + "-fileinfo.csv\""); try (ServletOutputStream out = response.getOutputStream()) { out.print("title"); out.print(','); out.print("pid"); out.print(','); out.print("mimetype"); out.print(','); out.print("length"); out.print(','); out.println("checksum"); if (server == null) initializeSolrServer();/*from ww w . j a v a 2 s . c o m*/ SolrQuery parameters = new SolrQuery(); parameters.setQuery("contentModel:" + ClientUtils.escapeQueryChars("info:fedora/cdr-model:Simple") + " ancestorPath:*" + ClientUtils.escapeQueryChars("," + pid + ",") + "*"); parameters.addSort("filesizeTotal", ORDER.desc); parameters.addField("title"); parameters.addField("id"); parameters.addField("datastream"); QueryResponse solrResponse = server.query(parameters); for (SolrDocument doc : solrResponse.getResults()) { Map<String, String> line = new HashMap<String, String>(); line.put("pid", (String) doc.getFieldValue("id")); line.put("title", (String) doc.getFieldValue("title")); String[] dsValues = new String[5]; for (Object ds : doc.getFieldValues("datastream")) { String dstr = (String) ds; if (dstr.startsWith("DATA_FILE|")) { dsValues = dstr.split(Pattern.quote("|")); break; } } line.put("md5sum", dsValues[4]); line.put("length", dsValues[3]); line.put("mimetype", dsValues[1]); outputCSV(line, out); } } }
From source file:edu.unc.lib.dl.cdr.services.rest.ContainerManifestController.java
License:Apache License
@SuppressWarnings("unchecked") @RequestMapping(value = "/edit/manifest-json/{pid}") public @ResponseBody Map<String, Object> getJSON(@PathVariable("pid") String pid) throws SolrServerException { if (server == null) initializeSolrServer();//from w ww.j a va 2 s . c o m SolrQuery parameters = new SolrQuery(); parameters.setQuery("ancestorPath:*" + ClientUtils.escapeQueryChars("," + pid + ",") + "*"); parameters.addSort("ancestorNames", ORDER.asc); parameters.addSort("isPart", ORDER.asc); parameters.addSort("displayOrder", ORDER.asc); parameters.addField("ancestorNames"); parameters.addField("ancestorPath"); parameters.addField("id"); parameters.addField("filesizeTotal"); parameters.addField("title"); QueryResponse solrResponse = server.query(parameters); // objects map is a local index of pid to map Map<String, Map<String, Object>> objects = new HashMap<String, Map<String, Object>>(); Map<String, Object> coll = new HashMap<String, Object>(); coll.put("pid", pid); String title = tripleStoreQueryService.lookupLabel(pid); coll.put("title", title); objects.put(pid, coll); for (SolrDocument doc : solrResponse.getResults()) { Map<String, Object> line = new HashMap<String, Object>(); objects.put((String) doc.getFieldValue("id"), line); Collection<Object> ancestorPaths = doc.getFieldValues("ancestorPath"); line.put("depth", String.valueOf(ancestorPaths.size())); // get parent id String[] ancestorPathsArray = ancestorPaths.toArray(new String[] {}); String lastAncestor = ancestorPathsArray[ancestorPathsArray.length - 1]; int start = lastAncestor.indexOf(",") + 1; int end = lastAncestor.indexOf(",", start); String parent = lastAncestor.substring(start, end); // file object record line.put("pid", doc.getFieldValue("id")); line.put("parentPid", parent); line.put("title", doc.getFieldValue("title")); line.put("filesizeTotal", doc.getFieldValue("filesizeTotal")); // TODO get checksum of data file } for (Map<String, Object> record : objects.values()) { if (pid.equals(record.get("pid"))) continue; String parentPid = (String) record.get("parentPid"); // file object as child Map<String, Object> parentHash = objects.get(parentPid); if (parentHash == null) { LOG.warn("Cannot find expected pid in index: {}", parentPid); continue; } List<Map<String, Object>> children = null; if (!parentHash.containsKey("children")) { children = new ArrayList<Map<String, Object>>(); parentHash.put("children", children); } else { children = (List<Map<String, Object>>) parentHash.get("children"); } children.add(record); } return coll; }
From source file:edu.unc.lib.dl.cdr.services.rest.ContainerManifestController.java
License:Apache License
@RequestMapping(value = "/edit/manifest-csv/{pid}") public void downloadCSV(@PathVariable("pid") String pid, HttpServletResponse response) throws SolrServerException, IOException { if (server == null) initializeSolrServer();/* w ww. j ava2 s. c o m*/ SolrQuery parameters = new SolrQuery(); parameters.setQuery("ancestorPath:*" + ClientUtils.escapeQueryChars("," + pid + ",") + "*"); parameters.addSort("ancestorNames", ORDER.asc); parameters.addSort("isPart", ORDER.asc); parameters.addSort("displayOrder", ORDER.asc); parameters.addField("ancestorPath"); parameters.addField("ancestorNames"); parameters.addField("id"); parameters.addField("title"); QueryResponse solrResponse = server.query(parameters); String id = pid.replace(":", "_"); response.addHeader("Content-Disposition", "attachment; filename=\"" + id + "-manifest.csv\""); try (ServletOutputStream out = response.getOutputStream()) { out.print("depth"); out.print(','); out.print("pid"); out.print(','); out.println("title"); for (SolrDocument doc : solrResponse.getResults()) { String title = (String) doc.getFieldValue("title"); String p = (String) doc.getFieldValue("id"); String anc = (String) doc.getFieldValue("ancestorNames"); int depth = doc.getFieldValues("ancestorPath").size(); outputCSV(p, title, depth, anc, out); } } }
From source file:edu.unc.lib.dl.search.solr.service.SolrSearchService.java
License:Apache License
/** * Retrieves the Solr tuple representing the object identified by id. * /* w ww.j a va2 s . c o m*/ * @param id * identifier (uuid) of the object to retrieve. * @param userAccessGroups * @return */ public BriefObjectMetadataBean getObjectById(SimpleIdRequest idRequest) { LOG.debug("In getObjectbyID"); QueryResponse queryResponse = null; SolrQuery solrQuery = new SolrQuery(); StringBuilder query = new StringBuilder(); query.append(solrSettings.getFieldName(SearchFieldKeys.ID.name())).append(':') .append(SolrSettings.sanitize(idRequest.getId())); try { // Add access restrictions to query addAccessRestrictions(query, idRequest.getAccessGroups()); /* * if (idRequest.getAccessTypeFilter() != null) { addAccessRestrictions(query, idRequest.getAccessGroups(), * idRequest.getAccessTypeFilter()); } */ } catch (AccessRestrictionException e) { // If the user doesn't have any access groups, they don't have access to anything, return null. LOG.error("Error while attempting to add access restrictions to object " + idRequest.getId(), e); return null; } // Restrict the result fields if set if (idRequest.getResultFields() != null) { for (String field : idRequest.getResultFields()) { solrQuery.addField(solrSettings.getFieldName(field)); } } solrQuery.setQuery(query.toString()); solrQuery.setRows(1); LOG.debug("getObjectById query: " + solrQuery.toString()); try { queryResponse = server.query(solrQuery); } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); return null; } List<BriefObjectMetadataBean> results = queryResponse.getBeans(BriefObjectMetadataBean.class); if (results != null && results.size() > 0) { return results.get(0); } return null; }
From source file:edu.unc.lib.dl.search.solr.service.SolrSearchService.java
License:Apache License
@SuppressWarnings("unchecked") public List<BriefObjectMetadata> getObjectsById(IdListRequest listRequest) { QueryResponse queryResponse = null;//from www.j av a 2 s . com SolrQuery solrQuery = new SolrQuery(); StringBuilder query = new StringBuilder("*:* "); try { // Add access restrictions to query addAccessRestrictions(query, listRequest.getAccessGroups()); } catch (AccessRestrictionException e) { // If the user doesn't have any access groups, they don't have access to anything, return null. LOG.error("Error while attempting to add access restrictions to object " + listRequest.getId(), e); return null; } query.append(" AND ("); boolean first = true; for (String id : listRequest.getIds()) { if (first) first = false; else query.append(" OR "); query.append(solrSettings.getFieldName(SearchFieldKeys.ID.name())).append(':') .append(SolrSettings.sanitize(id)); } query.append(")"); // Restrict the result fields if set if (listRequest.getResultFields() != null) { for (String field : listRequest.getResultFields()) { solrQuery.addField(solrSettings.getFieldName(field)); } } solrQuery.setQuery(query.toString()); solrQuery.setRows(listRequest.getIds().size()); LOG.debug("getObjectsById query: " + solrQuery.toString()); try { queryResponse = server.query(solrQuery); } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); return null; } List<?> results = queryResponse.getBeans(BriefObjectMetadataBean.class); return (List<BriefObjectMetadata>) results; }
From source file:edu.unc.lib.dl.search.solr.service.SolrSearchService.java
License:Apache License
public Date getTimestamp(String pid, AccessGroupSet accessGroups) { QueryResponse queryResponse = null;/*from www . j ava 2s . c o m*/ SolrQuery solrQuery = new SolrQuery(); StringBuilder query = new StringBuilder(); query.append(solrSettings.getFieldName(SearchFieldKeys.ID.name())).append(':') .append(SolrSettings.sanitize(pid)); try { // Add access restrictions to query addAccessRestrictions(query, accessGroups); } catch (AccessRestrictionException e) { // If the user doesn't have any access groups, they don't have access to anything, return null. LOG.error("Error while attempting to add access restrictions to object " + pid, e); return null; } solrQuery.addField(solrSettings.getFieldName(SearchFieldKeys.TIMESTAMP.name())); solrQuery.setQuery(query.toString()); solrQuery.setRows(1); LOG.debug("query: " + solrQuery.toString()); try { queryResponse = server.query(solrQuery); } catch (SolrServerException e) { LOG.error("Error retrieving Solr object request: " + e); return null; } if (queryResponse.getResults().getNumFound() == 0) return null; return (Date) queryResponse.getResults().get(0).getFieldValue("timestamp"); }
From source file:edu.unc.lib.dl.search.solr.service.SolrSearchService.java
License:Apache License
/** * Constructs a SolrQuery object from the search state specified within a SearchRequest object. The request may * optionally request to retrieve facet results in addition to search results. * //from w ww .j a va 2 s . c o m * @param searchRequest * @param isRetrieveFacetsRequest * @return */ protected SolrQuery generateSearch(SearchRequest searchRequest) { SearchState searchState = (SearchState) searchRequest.getSearchState(); SolrQuery solrQuery = new SolrQuery(); StringBuilder termQuery = new StringBuilder(); // Generate search term query string addSearchFields(searchState, termQuery); // Add range Fields to the query addRangeFields(searchState, termQuery); // No query terms given, make it an everything query StringBuilder query = new StringBuilder(); if (termQuery.length() == 0) { query.append("*:* "); } else { query.append('(').append(termQuery).append(')'); } // Add access restrictions to query try { addAccessRestrictions(query, searchRequest.getAccessGroups()); } catch (AccessRestrictionException e) { // If the user doesn't have any access groups, they don't have access to anything, return null. LOG.debug("User had no access groups", e); return null; } // Add query solrQuery.setQuery(query.toString()); if (searchState.getResultFields() != null) { for (String field : searchState.getResultFields()) { String solrFieldName = solrSettings.getFieldName(field); if (solrFieldName != null) solrQuery.addField(solrFieldName); } } if (searchState.getRollup() != null && searchState.getRollup()) { solrQuery.set(GroupParams.GROUP, true); if (searchState.getRollupField() == null) solrQuery.set(GroupParams.GROUP_FIELD, solrSettings.getFieldName(SearchFieldKeys.ROLLUP_ID.name())); else solrQuery.set(GroupParams.GROUP_FIELD, solrSettings.getFieldName(searchState.getRollupField())); solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, true); if (searchState.getFacetsToRetrieve() != null && searchState.getFacetsToRetrieve().size() > 0) { solrQuery.set(GroupParams.GROUP_FACET, true); } } // Add sort parameters List<SearchSettings.SortField> sortFields = searchSettings.sortTypes.get(searchState.getSortType()); if (sortFields != null) { for (int i = 0; i < sortFields.size(); i++) { SearchSettings.SortField sortField = sortFields.get(i); SolrQuery.ORDER sortOrder = SolrQuery.ORDER.valueOf(sortField.getSortOrder()); if (!searchState.getSortNormalOrder()) sortOrder = sortOrder.reverse(); solrQuery.addSort(solrSettings.getFieldName(sortField.getFieldName()), sortOrder); } } // Set requested resource types String resourceTypeFilter = this.getResourceTypeFilter(searchState.getResourceTypes()); if (resourceTypeFilter != null) { solrQuery.addFilterQuery(resourceTypeFilter); } // Turn on faceting if (searchRequest.isRetrieveFacets()) { solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); if (searchState.getBaseFacetLimit() != null) solrQuery.setFacetLimit(searchState.getBaseFacetLimit()); if (searchState.getFacetsToRetrieve() != null) { // Add facet fields for (String facetName : searchState.getFacetsToRetrieve()) { String facetField = solrSettings.getFieldName(facetName); if (facetField != null) solrQuery.addFacetField(solrSettings.getFieldName(facetName)); } } } // Override the base facet limit if overrides are given. if (searchState.getFacetLimits() != null) { for (Entry<String, Integer> facetLimit : searchState.getFacetLimits().entrySet()) { solrQuery.add("f." + solrSettings.getFieldName(facetLimit.getKey()) + ".facet.limit", facetLimit.getValue().toString()); } } // Add facet limits Map<String, Object> facets = searchState.getFacets(); if (facets != null) { Iterator<Entry<String, Object>> facetIt = facets.entrySet().iterator(); while (facetIt.hasNext()) { Entry<String, Object> facetEntry = facetIt.next(); if (facetEntry.getValue() instanceof String) { LOG.debug("Adding facet " + facetEntry.getKey() + " as a String"); // Add Normal facets solrQuery.addFilterQuery(solrSettings.getFieldName(facetEntry.getKey()) + ":\"" + SolrSettings.sanitize((String) facetEntry.getValue()) + "\""); } else { LOG.debug("Adding facet " + facetEntry.getKey() + " as a " + facetEntry.getValue().getClass().getName()); facetFieldUtil.addToSolrQuery(facetEntry.getValue(), solrQuery); } } } // Scope hierarchical facet results to the highest tier selected within the facet tree if (searchRequest.isRetrieveFacets() && searchRequest.isApplyCutoffs() && searchState.getFacetsToRetrieve() != null) { Set<String> facetsQueried = searchState.getFacets().keySet(); // Apply closing cutoff to all cutoff facets that are being retrieved but not being queried for for (String fieldKey : searchState.getFacetsToRetrieve()) { if (!facetsQueried.contains(fieldKey)) { facetFieldUtil.addDefaultFacetPivot(fieldKey, solrQuery); } } // Add individual facet field sorts if they are present. if (searchState.getFacetSorts() != null) { for (Entry<String, String> facetSort : searchState.getFacetSorts().entrySet()) { solrQuery.add("f." + solrSettings.getFieldName(facetSort.getKey()) + ".facet.sort", facetSort.getValue()); } } } // Set Navigation options if (searchState.getStartRow() != null) solrQuery.setStart(searchState.getStartRow()); if (searchState.getRowsPerPage() != null) solrQuery.setRows(searchState.getRowsPerPage()); return solrQuery; }