List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
From source file:org.dspace.statistics.SolrLoggerServiceImpl.java
License:BSD License
@Override public void exportHits() throws Exception { Context context = new Context(); File tempDirectory = new File( configurationService.getProperty("dspace.dir") + File.separator + "temp" + File.separator); tempDirectory.mkdirs();/*w w w . ja v a 2 s . com*/ try { //First of all retrieve the total number of records to be updated SolrQuery query = new SolrQuery(); query.setQuery("*:*"); ModifiableSolrParams solrParams = new ModifiableSolrParams(); solrParams.set(CommonParams.Q, "statistics_type:view OR (*:* AND -statistics_type:*)"); solrParams.set(CommonParams.WT, "javabin"); solrParams.set(CommonParams.ROWS, String.valueOf(10000)); addAdditionalSolrYearCores(query); long totalRecords = solr.query(query).getResults().getNumFound(); System.out.println("There are " + totalRecords + " usage events in SOLR for download/view."); for (int i = 0; i < totalRecords; i += 10000) { solrParams.set(CommonParams.START, String.valueOf(i)); QueryResponse queryResponse = solr.query(solrParams); SolrDocumentList docs = queryResponse.getResults(); File exportOutput = new File( tempDirectory.getPath() + File.separatorChar + "usagestats_" + i + ".csv"); exportOutput.delete(); //export docs addDocumentsToFile(context, docs, exportOutput); System.out.println("Export hits [" + i + " - " + String.valueOf(i + 9999) + "] to " + exportOutput.getCanonicalPath()); } } catch (Exception e) { log.error("Error while exporting SOLR data", e); throw e; } finally { context.abort(); } }
From source file:org.dspace.util.SolrUpgradePre6xStatistics.java
License:BSD License
private long runReportQuery() throws SolrServerException { StringBuilder sb = new StringBuilder(MIGQUERY); SolrQuery sQ = new SolrQuery(); sQ.setQuery(sb.toString()); sQ.setFacet(true);/* w w w .j av a 2s . c om*/ sQ.addFacetField("type"); sQ.addFacetField("scopeType"); QueryResponse sr = server.query(sQ); long total = 0; long unexpected = 0; for (FacetField ff : sr.getFacetFields()) { String s = ff.getName().equals("type") ? "View" : "Search"; for (FacetField.Count count : ff.getValues()) { String name = count.getName(); int id = Integer.parseInt(name); if (id == Constants.COMMUNITY) { name = "Community " + s; } else if (id == Constants.COLLECTION) { name = "Collection " + s; } else if (id == Constants.ITEM) { name = "Item " + s; } else if (id == Constants.BITSTREAM) { name = "Bistream " + s; } else { /* * In testing, I discovered some unexpected values in the scopeType field. It * looks like they may have been a result of a CSV import/export error. This * will group any unexpected values into one report line. */ unexpected += count.getCount(); continue; } System.out.println(String.format("\t%,12d\t%s", count.getCount(), name)); total += count.getCount(); } } if (unexpected > 0) { System.out.println(String.format("\t%,12d\t%s", unexpected, "Unexpected Type & Full Site")); total += unexpected; } long rem = sr.getResults().getNumFound() - total; if (rem > 0) { System.out.println(String.format("\t%,12d\t%s", rem, "Other Records")); total += rem; } return total; }
From source file:org.dspace.util.SolrUpgradePre6xStatistics.java
License:BSD License
private int updateRecords(String query) throws SolrServerException, SQLException, IOException { int initNumProcessed = numProcessed; SolrQuery sQ = new SolrQuery(); sQ.setQuery(query); sQ.setRows(batchSize);/*from w w w .j av a 2 s .c o m*/ // Ensure that items are grouped by id // Sort by id fails due to presense of id and string fields. The ord function // seems to help sQ.addSort("type", SolrQuery.ORDER.desc); sQ.addSort("scopeType", SolrQuery.ORDER.desc); sQ.addSort("ord(owningItem)", SolrQuery.ORDER.desc); sQ.addSort("id", SolrQuery.ORDER.asc); sQ.addSort("scopeId", SolrQuery.ORDER.asc); QueryResponse sr = server.query(sQ); SolrDocumentList sdl = sr.getResults(); for (int i = 0; i < sdl.size() && (numProcessed < numRec); i++) { SolrDocument sd = sdl.get(i); SolrInputDocument input = ClientUtils.toSolrInputDocument(sd); input.remove("_version_"); for (FIELD col : FIELD.values()) { mapField(input, col); } docs.add(input); ++numProcessed; } return numProcessed - initNumProcessed; }
From source file:org.eclipse.orion.internal.server.search.IndexPurgeJob.java
License:Open Source License
private SolrQuery findAllQuery() { SolrQuery query = new SolrQuery(); query.setParam(CommonParams.ROWS, Long.toString(PAGE_SIZE)); query.setQuery("*:*"); //$NON-NLS-1$ return query; }
From source file:org.eclipse.orion.internal.server.search.SearchServlet.java
License:Open Source License
private SolrQuery buildSolrQuery(HttpServletRequest req) { SolrQuery query = new SolrQuery(); query.setParam(CommonParams.WT, "json"); query.setParam(CommonParams.FL, "Id,Name,Length,Directory,LastModified,Location"); query.setParam("hl", "true"); String queryString = req.getParameter(CommonParams.Q); queryString += " AND " + ProtocolConstants.KEY_USER_NAME + ':' + req.getRemoteUser(); query.setQuery(queryString); return query; }
From source file:org.eclipse.rdf4j.sail.solr.SolrIndex.java
License:Open Source License
/** * Evaluates the given query only for the given resource. * /*from w w w . j a v a 2s .c o m*/ * @throws SolrServerException */ public QueryResponse search(Resource resource, SolrQuery query) throws SolrServerException, IOException { // rewrite the query String idQuery = termQuery(SearchFields.URI_FIELD_NAME, SearchFields.getResourceID(resource)); query.setQuery(query.getQuery() + " AND " + idQuery); return search(query); }
From source file:org.eclipse.recommenders.coordinates.maven.MavenCentralFingerprintSearchAdvisor.java
License:Open Source License
@Override protected Optional<ProjectCoordinate> doSuggest(DependencyInfo dependencyInfo) { if (!dependencyInfo.getFile().isFile()) { return absent(); }/*from w ww. ja v a 2s .c o m*/ try { SolrQuery query = new SolrQuery(); query.setQuery("1:\"" + Fingerprints.sha1(dependencyInfo.getFile()) + "\""); query.setRows(1); QueryResponse response = server.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument document : results) { if (!SUPPORTED_PACKAGINGS.contains(document.get(FIELD_PACKAGING))) { continue; } String groupId = (String) document.get(FIELD_GROUP_ID); String artifactId = (String) document.get(FIELD_ARTIFACT_ID); String version = (String) document.get(FIELD_VERSION); return tryNewProjectCoordinate(groupId, artifactId, canonicalizeVersion(version)); } return absent(); } catch (SolrServerException e) { LOG.error("Exception when querying Solr Server <{}>", SEARCH_MAVEN_ORG, e); return absent(); } }
From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java
License:Open Source License
public List<Match> autocomplete(final String query, Integer pageSize, Map<String, String> selectedFacets) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); if (query != null && !query.trim().equals("")) { //String searchString = query.trim().replace(" ", "+"); solrQuery.setQuery(query); } else {//from w ww. jav a 2 s .c om return new ArrayList<Match>(); } // Filter the searchable objects out solrQuery.addFilterQuery("base.class_searchable_b:" + isSearchableObject()); // Set additional result parameters //solrQuery.setRows(pageSize); int rows = 100; solrQuery.setRows(rows); if (selectedFacets != null && !selectedFacets.isEmpty()) { for (String facetName : selectedFacets.keySet()) { solrQuery.addFilterQuery(facetName + ":" + selectedFacets.get(facetName)); } } solrQuery.set("defType", "edismax"); solrQuery.set("qf", "autocomplete^3 autocompleteng"); solrQuery.set("pf", "autocompletenge"); solrQuery.set("fl", "autocomplete,id"); solrQuery.setHighlight(true); solrQuery.set("hl.fl", "autocomplete"); solrQuery.set("hl.snippets", 3); solrQuery.setHighlightSimplePre("<b>"); solrQuery.setHighlightSimplePost("</b>"); //solrQuery.setSortField("autocomplete", SolrQuery.ORDER.valueOf("desc")); /* solrQuery.set("group","true"); solrQuery.set("group.field", "autocomplete"); */ QueryResponse queryResponse = solrServer.query(solrQuery); List<Match> results = new ArrayList<Match>(); Map<String, Match> matchMap = new HashMap<String, Match>(); for (SolrDocument solrDocument : queryResponse.getResults()) { Match match = new Match(); String label = filter((String) solrDocument.get("autocomplete")); match.setLabel(label); match.setValue(label); matchMap.put((String) solrDocument.get("id"), match); results.add(match); } List<Match> distinctResults = removeDuplicates(results); List<Match> subResults1 = new ArrayList<Match>(); //ExactMatch List<Match> subResults2 = new ArrayList<Match>(); for (Match item : distinctResults) { if ((item.getLabel().toLowerCase().startsWith(query.toLowerCase()))) { subResults1.add(item); } else { subResults2.add(item); } } if (subResults1.size() > 0) { Collections.sort(subResults1); } /* Collections.sort(subResults1, new Comparator() { @Override public int compare(Object matchOne, Object matchTwo) { //use instanceof to verify the references are indeed of the type in question return ((Match)matchOne).getLabel() .compareTo(((Match)matchTwo).getLabel()); } }); */ subResults1.addAll(subResults2); List<Match> subResults = subResults1; List<Match> finalResults = new ArrayList<Match>(); if (subResults.size() > 10) { finalResults = subResults.subList(0, 10); } else { finalResults = subResults; } //subResults = finalResults; /* for(GroupCommand groupCommand : queryResponse.getGroupResponse().getValues()) { for (Group group : groupCommand.getValues()) { for (SolrDocument solrDocument : group.getResult()) { Match match = new Match(); String label = filter((String) solrDocument.get("autocomplete")); match.setLabel(label); match.setValue(label); matchMap.put((String) solrDocument.get("id"), match); results.add(match); } } } */ for (String documentId : matchMap.keySet()) { if (queryResponse.getHighlighting().containsKey(documentId)) { Map<String, List<String>> highlightedTerms = queryResponse.getHighlighting().get(documentId); if (highlightedTerms.containsKey("autocomplete")) { matchMap.get(documentId).setLabel(highlightedTerms.get("autocomplete").get(0)); } } } //return results; return finalResults; }
From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java
License:Open Source License
public CellSet analyse(String rows, String cols, Integer firstCol, Integer maxCols, Integer firstRow, Integer maxRows, Map<String, String> selectedFacets, String[] facets, Cube cube) throws SolrServerException { SolrQuery query = new SolrQuery(); query.setQuery("*:*"); SolrQuery totalQuery = new SolrQuery(); totalQuery.setQuery("*:*"); // We're not interested in the results themselves query.setRows(1);//from ww w. j a v a 2 s .c om query.setStart(0); totalQuery.setRows(1); totalQuery.setStart(0); if (rows == null) { query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); query.addFacetField(cube.getDefaultLevel()); includeMissing(query, cube.getDefaultLevel()); includeMissing(totalQuery, cube.getDefaultLevel()); if (maxRows != null) { totalQuery.setFacet(true); totalQuery.setFacetMinCount(1); totalQuery.addFacetField("{!key=totalRows}" + cube.getDefaultLevel()); query.add("f." + cube.getDefaultLevel() + ".facet.limit", maxRows.toString()); query.add("f." + cube.getDefaultLevel() + ".facet.mincount", "1"); if (firstRow != null) { query.add("f." + cube.getDefaultLevel() + ".facet.offset", firstRow.toString()); } } } else if (cols == null) { query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); query.addFacetField(rows); includeMissing(query, rows); includeMissing(totalQuery, rows); if (maxRows != null) { totalQuery.setFacet(true); totalQuery.setFacetMinCount(1); totalQuery.addFacetField("{!key=totalRows}" + rows); query.add("f." + rows + ".facet.limit", maxRows.toString()); query.add("f." + rows + ".facet.mincount", "1"); if (firstRow != null) { query.add("f." + rows + ".facet.offset", firstRow.toString()); } } if (cube.getLevel(rows).isMultiValued() && cube.getLevel(rows).getHigher() != null) { Level higher = cube.getLevel(rows).getHigher(); totalQuery.add("f." + rows + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); query.add("f." + rows + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); } } else { query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); query.addFacetField(rows); includeMissing(query, rows); includeMissing(totalQuery, rows); if (maxRows != null) { totalQuery.setFacet(true); totalQuery.setFacetMinCount(1); totalQuery.addFacetField("{!key=totalRows}" + rows); query.add("f." + rows + ".facet.limit", maxRows.toString()); query.add("f." + rows + ".facet.mincount", "1"); if (firstRow != null) { query.add("f." + rows + ".facet.offset", firstRow.toString()); } } if (cube.getLevel(rows).isMultiValued() && cube.getLevel(rows).getHigher() != null) { Level higher = cube.getLevel(rows).getHigher(); totalQuery.add("f." + rows + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); query.add("f." + rows + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); } query.addFacetField(cols); includeMissing(query, cols); if (maxCols != null) { totalQuery.setFacet(true); totalQuery.setFacetMinCount(1); totalQuery.addFacetField("{!key=totalCols}" + cols); /** * Facet pivot does not behave the same way on columns - the limit is */ //query.add("f." + cols + ".facet.limit", maxCols.toString()); //query.add("f." + cols + ".facet.mincount", "1"); //if (firstCol != null) { // query.add("f." + cols + ".facet.offset", firstCol.toString()); //} } if (cube.getLevel(cols).isMultiValued() && cube.getLevel(cols).getHigher() != null) { Level higher = cube.getLevel(cols).getHigher(); totalQuery.add("f." + cols + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); query.add("f." + cols + ".facet.prefix", selectedFacets.get(higher.getFacet()) + "_"); } query.addFacetPivotField(rows + "," + cols); } if (selectedFacets != null && !selectedFacets.isEmpty()) { for (String facetName : selectedFacets.keySet()) { String facetValue = selectedFacets.get(facetName); if (StringUtils.isNotEmpty(facetValue)) { totalQuery.addFilterQuery(facetName + ":" + selectedFacets.get(facetName)); query.addFilterQuery(facetName + ":" + selectedFacets.get(facetName)); } else {//Subtract/Exclude documents with any value for the facet totalQuery.addFilterQuery("-" + facetName + ":[* TO *]"); query.addFilterQuery("-" + facetName + ":[* TO *]"); } } } if (facets != null && facets.length != 0) { query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); for (String facetName : facets) { if (rows != null && rows.equals(facetName)) { } else if (cols != null && cols.equals(facetName)) { } else if (rows == null && facetName.equals(cube.getDefaultLevel())) { } else { includeMissing(query, facetName); query.addFacetField(facetName); } } } QueryResponse response = solrServer.query(query); QueryResponse totalResponse = solrServer.query(totalQuery); FacetField totalRows = null; FacetField totalCols = null; if (totalResponse.getFacetField("totalRows") != null) { totalRows = totalResponse.getFacetField("totalRows"); } if (totalResponse.getFacetField("totalCols") != null) { totalCols = totalResponse.getFacetField("totalCols"); } CellSet cellSet = new CellSet(response, selectedFacets, query, rows, cols, firstRow, maxRows, firstCol, maxCols, totalRows, totalCols, cube); return cellSet; }
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/* www . j av a 2s . c o m*/ * @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; }