Example usage for org.apache.solr.client.solrj SolrQuery setQuery

List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setQuery.

Prototype

public SolrQuery setQuery(String query) 

Source Link

Usage

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;
}