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

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

Introduction

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

Prototype

public SolrQuery setRows(Integer rows) 

Source Link

Usage

From source file:edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean.java

public List<Long> expandSetQuery(String query) throws OaiSetException {
    // We do not allow "keyword" queries (like "king") - we require
    // that they search on specific fields, for ex., "authorName:king":
    if (query == null || !(query.indexOf(':') > 0)) {
        throw new OaiSetException("Invalid search query.");
    }//ww w . j a va2  s  . c  om
    SolrQuery solrQuery = new SolrQuery();
    String restrictedQuery = addQueryRestrictions(query);

    solrQuery.setQuery(restrictedQuery);

    // addFilterQuery equivalent to addQueryRestrictions
    //        solrQuery.setQuery(query);
    //        solrQuery.addFilterQuery(SearchFields.TYPE + ":" + SearchConstants.DATASETS);
    //        solrQuery.addFilterQuery(SearchFields.IS_HARVESTED + ":" + false);
    //        solrQuery.addFilterQuery(SearchFields.PUBLICATION_STATUS + ":" + IndexServiceBean.PUBLISHED_STRING);

    solrQuery.setRows(Integer.MAX_VALUE);

    QueryResponse queryResponse = null;
    try {
        queryResponse = getSolrServer().query(solrQuery);
    } catch (RemoteSolrException ex) {
        String messageFromSolr = ex.getLocalizedMessage();
        String error = "Search Syntax Error: ";
        String stringToHide = "org.apache.solr.search.SyntaxError: ";
        if (messageFromSolr.startsWith(stringToHide)) {
            // hide "org.apache.solr..."
            error += messageFromSolr.substring(stringToHide.length());
        } else {
            error += messageFromSolr;
        }
        logger.fine(error);
        throw new OaiSetException(error);
    } catch (SolrServerException ex) {
        logger.fine("Internal Dataverse Search Engine Error");
        throw new OaiSetException("Internal Dataverse Search Engine Error");
    }

    SolrDocumentList docs = queryResponse.getResults();
    Iterator<SolrDocument> iter = docs.iterator();
    List<Long> resultIds = new ArrayList<>();

    while (iter.hasNext()) {
        SolrDocument solrDocument = iter.next();
        Long entityid = (Long) solrDocument.getFieldValue(SearchFields.ENTITY_ID);
        resultIds.add(entityid);
    }

    return resultIds;

}

From source file:edu.harvard.lib.lcloud.ItemDAO.java

License:Open Source License

/**
 * Returns a SolrDocumentList for a given set of search parameters. Search parameters are parsed 
 * and mapped into solr (solrj) query syntax, and solr query is performed.
 * @param queryParams query parameters to map to a solr query
 * @return      the SolrDocumentList for this query
 * @see         SolrDocumentList//from   w w  w.java  2 s .  c  o  m
 */

private SolrDocumentList doQuery(MultivaluedMap<String, String> queryParams) {
    SolrDocumentList docs = null;
    HttpSolrServer server = null;
    ArrayList<String> queryList = new ArrayList<String>();
    server = SolrServer.getSolrConnection();
    SolrQuery query = new SolrQuery();
    for (String key : queryParams.keySet()) {
        String value = queryParams.getFirst(key);
        System.out.println(key + " : " + queryParams.getFirst(key) + "\n");
        if (key.equals("start")) {
            int startNo = Integer.parseInt(value);
            if (startNo < 0)
                startNo = 0;
            query.setStart(startNo);
        } else if (key.equals("limit")) {
            limit = Integer.parseInt(value);
            query.setRows(limit);
        } else if (key.equals("sort.asc") || key.equals("sort"))
            query.setSort(value, ORDER.asc);
        else if (key.equals("sort.desc"))
            query.setSort(value, ORDER.desc);
        else if (key.startsWith("facet")) {
            query.setFacet(true);
            String[] facetArray = value.split(",");
            for (String f : facetArray) {
                query.addFacetField(f);
            }
        } else {
            if (key.endsWith("_exact"))
                queryList.add(key.replace("_exact", "") + ":\"" + value + "\"");
            else {
                if (value.contains(" "))
                    value = "( " + value.replaceAll(" ", " AND ") + ")";
                if (key.equals("q"))
                    queryList.add("keyword:" + value);
                else
                    queryList.add(key + "_keyword:" + value);
            }
        }
    }

    Iterator<String> it = queryList.iterator();
    String queryStr = "";
    while (it.hasNext()) {
        String qTerm = (String) it.next();
        System.out.print("QT: " + qTerm + "\n");
        queryStr += qTerm;
        System.out.print("QS: " + queryStr + "\n");
        if (it.hasNext())
            queryStr += " AND ";
    }
    System.out.print("queryStr: " + queryStr);
    query.setQuery(queryStr);
    QueryResponse response = null;
    try {
        response = server.query(query);
    } catch (SolrServerException se) {
        log.error(se.getMessage());
        throw new BadParameterException(se.getMessage());
    } catch (RemoteSolrException rse) {
        if (rse.getMessage().contains("SyntaxError")) {
            log.error("solr syntax error");
            throw new BadParameterException("Incorrect query syntax");
        } else {
            String msg = rse.getMessage().replace("_keyword", "");
            log.error(msg);
            throw new BadParameterException("Incorrect query syntax:" + msg);
        }
    }
    List<FacetField> facets = response.getFacetFields();
    facet = null;
    if (facets != null) {
        facet = new Facet();
        List<FacetType> facetTypes = new ArrayList<FacetType>();
        for (FacetField facetField : facets) {
            List<FacetTerm> facetTerms = new ArrayList<FacetTerm>();
            FacetType facetType = new FacetType();
            facetType.setFacetName(facetField.getName());
            List<FacetField.Count> facetEntries = facetField.getValues();
            for (FacetField.Count fcount : facetEntries) {
                if (fcount.getCount() > 0) {
                    FacetTerm facetTerm = new FacetTerm();
                    facetTerm.setTermName(fcount.getName());
                    facetTerm.setTermCount(fcount.getCount());
                    //System.out.println(fcount.getName() + ": " + fcount.getCount());
                    facetTerms.add(facetTerm);
                }
            }
            facetType.setFacetTerms(facetTerms);
            facetTypes.add(facetType);
        }
        facet.setFacetTypes(facetTypes);
    }
    docs = response.getResults();
    return docs;
}

From source file:edu.harvard.liblab.ecru.rs.ResourceUtils.java

License:Open Source License

public static SolrQuery createSolrQuery(String q, List<String> fqs, String fl, String start, String rows,
        HashMap<String, List<String>> facetMap, String sort) {
    SolrQuery query = new SolrQuery();
    if (q == null || q.trim().isEmpty()) {
        q = QUERY_ALL;//from   w ww.  j  a  v a2 s  .  c om
    }
    query.setQuery(q);
    if (fqs != null && !fqs.isEmpty()) {
        query.setFilterQueries(fqs.toArray(new String[fqs.size()]));
    }
    try {
        Integer s = new Integer(start);
        query.setStart(s);

    } catch (NumberFormatException e) {
        if (start != null)
            System.out.println("start not integer: " + start);
    }
    try {
        Integer r = new Integer(rows);
        query.setRows(r);

    } catch (NumberFormatException e) {
        if (rows != null)
            System.out.println("rows not integer: " + rows);
    }
    if (fl != null && !fl.isEmpty()) {
        if (fl.indexOf("type") < 0) {
            fl += ",type";
        }
        String[] fields = fl.split(",");
        for (int i = 0; i < fields.length; i++) {
            fields[i] = fields[i].trim();
        }

        query.setFields(fields);

    }
    if (sort != null && !sort.trim().isEmpty()) {
        String[] sortArr = sort.split(",");
        ArrayList<SortClause> clauses = new ArrayList<SortClause>();
        for (String s : sortArr) {
            if (!s.isEmpty()) {
                String[] sc = s.split(" ");
                String v = sc[0];
                String order = "asc";
                if (sc.length == 2) {
                    order = sc[1];
                }
                clauses.add(new SortClause(v, (order.equals("asc") ? ORDER.asc : ORDER.desc)));
            }
        }
        query.setSorts(clauses);
    }
    query = addFacetsToQuery(query, facetMap);
    return query;
}

From source file:edu.indiana.d2i.htrc.solr.connection.SolrManager.java

License:Apache License

/**
 * send query String to Solr and get response
 * //from w w w. j a  v a2s  .c o  m
 * @param queryStr query String that can be parsed by Solr Query Parser 
 * @return query response, a org.apache.solr.client.solrj.response.QueryResponse object
 */
public QueryResponse query(String queryStr) {

    SolrQuery query = new SolrQuery();

    query.setRows(Integer.MAX_VALUE);
    query.setQuery(queryStr);

    QueryResponse query_response = null;
    try {
        query_response = solrServer.query(query);
    } catch (SolrServerException e) {
        e.printStackTrace();
    }

    return query_response;
}

From source file:edu.jhu.cvrg.ceptools.main.SearchPubs.java

License:Apache License

@SuppressWarnings("unchecked")
public void SearchSolr() {

    try {// w w  w.  j ava 2  s  .c o  m

        // CoreAdminRequest adminRequest = new CoreAdminRequest();
        // adminRequest.setAction(CoreAdminAction.RELOAD);

        SolrServer solr = new HttpSolrServer("http://localhost:8983/solr");
        String query;
        query = "collector:" + searchentry;

        SolrQuery theq = new SolrQuery();
        theq.setQuery(query);
        theq.setRows(1000);

        QueryResponse response = new QueryResponse();
        response = solr.query(theq);
        SolrDocumentList list = response.getResults();

        int docnum = 1;

        for (SolrDocument doc : list) {
            Publication currlist = new Publication();

            List<String> fullnames = new ArrayList<String>();
            String currepubsum1 = "", currepubsum2 = "";

            currlist.setTitle(doc.getFieldValue("ptitle").toString());

            currlist.setAbstract(doc.getFieldValue("abstract").toString());
            currlist.setPmid(Integer.valueOf(doc.getFieldValue("pmid").toString()));

            pmid = String.valueOf(currlist.getPmid());

            if (doc.getFieldValue("lruid") != null) {
                currlist.setUserid(doc.getFieldValue("lruid").toString());
            } else {
                currlist.setUserid("");
            }

            if (doc.getFieldValue("journalname") != null) {
                currlist.setJournalname(doc.getFieldValue("journalname").toString());
            }
            if (doc.getFieldValue("completion") != null) {
                currlist.setCompleted(Boolean.valueOf(doc.getFieldValue("completion").toString()));
            } else {
                currlist.setCompleted(false);
            }
            if (doc.getFieldValue("journalyear") != null) {
                currlist.setJournalyear(doc.getFieldValue("journalyear").toString());
            }
            if (doc.getFieldValue("journalday") != null) {
                currlist.setJournalday(doc.getFieldValue("journalday").toString());
            }
            if (doc.getFieldValue("journalmonth") != null) {
                currlist.setJournalmonth(doc.getFieldValue("journalmonth").toString());
            }
            if (doc.getFieldValue("journalpage") != null) {
                currlist.setJournalstartpg(doc.getFieldValue("journalpage").toString());
            }
            if (doc.getFieldValue("journalissue") != null) {
                currlist.setJournalissue(doc.getFieldValue("journalissue").toString());
            }
            if (doc.getFieldValue("journalvolume") != null) {
                currlist.setJournalvolume(doc.getFieldValue("journalvolume").toString());
            }
            if (doc.getFieldValue("publication_year") != null) {
                currlist.setYear(doc.getFieldValue("publicationdate_year").toString());
            }
            if (doc.getFieldValue("doi") != null) {
                currlist.setDoi(doc.getFieldValue("doi").toString());
            }

            if (doc.getFieldValues("pfileinfo") != null) {

                Collection<Object> currcoll = doc.getFieldValues("pfileinfo");

                for (Object currobj : currcoll) {
                    convertStore(String.valueOf(currobj), currlist);
                }

            }

            List<String> fieldValue = (List<String>) doc.getFieldValue("author_firstname");
            currlist.setFauthors(fieldValue);
            currlist.setLauthors((List<String>) doc.getFieldValue("author_lastname"));

            if (doc.getFieldValue("epubmonth") != null) {
                currlist.setEpubmonth(doc.getFieldValue("epubmonth").toString());
            }

            if (doc.getFieldValue("epubyear") != null) {
                currlist.setEpubyear(doc.getFieldValue("epubyear").toString());
            }
            if (doc.getFieldValue("epubday") != null) {
                currlist.setEpubday(doc.getFieldValue("epubday").toString());
            }
            if (doc.getFieldValue("author_fullname_list") != null) {

                currlist.setAuthorfull(doc.getFieldValue("author_fullname_list").toString());
            }

            int counter = 0;

            for (String currstring : currlist.getFauthors()) {
                currstring += " " + currlist.getLauthors().get(counter);
                fullnames.add(currstring);
                counter++;
            }

            currlist.setFullnames(fullnames);

            if (currlist.getJournalvolume().length() > 0) {
                currepubsum2 += currlist.getJournalvolume();
            }

            if (currlist.getJournalissue().length() > 0) {
                currepubsum2 += "(" + currlist.getJournalissue() + ")" + ":";
            }

            if (currlist.getJournalstartpg().length() > 0) {
                currepubsum2 += currlist.getJournalstartpg() + ".";
            }

            if (currlist.getEpubday().length() < 1 && currlist.getEpubmonth().length() < 1
                    && currlist.getEpubyear().length() < 1) {
                currepubsum1 = "[Epub ahead of print]";
            } else if (currlist.getEpubyear().length() > 0) {
                currepubsum1 = "Epub " + currlist.getEpubyear() + " " + currlist.getEpubmonth() + " "
                        + currlist.getEpubday();
            } else {
                currepubsum1 = "";
            }

            currlist.setEpubsum(currepubsum1);
            currlist.setEpubsum2(currepubsum2);
            currlist.setIndex(docnum);

            results.add(currlist);
            docnum++;
        }

    } catch (Exception ex) {
        logger.info(ex);
        StringWriter stack = new StringWriter();
        ex.printStackTrace(new PrintWriter(stack));

    }
}

From source file:edu.ku.brc.sgr.SGRMatcher.java

License:Open Source License

public MatchResults match(Matchable matchable, Integer nRows) {
    SolrQuery query = getBaseQuery();
    if (nRows != null)
        query.setRows(nRows);
    return matchable.doMatch(server, query);
}

From source file:edu.tamu.tcat.trc.digires.books.hathitrust.HTFilesSearchService.java

License:Apache License

@Override
public CopySearchResult find(ContentQuery query) throws ResourceAccessException {
    if (solrServerFuture == null)
        throw new IllegalStateException("Service is disposed");

    // HACK hard coded. Should be provided to the service
    try {//from w w w.ja v  a  2  s  .  c o  m
        HttpSolrClient solrServer = solrServerFuture.get(2, TimeUnit.MINUTES);
        Objects.requireNonNull(solrServer, "No active connection to Solr Server");

        String queryString = formatQueryString(query);

        SolrQuery solrQuery = new SolrQuery(queryString);
        solrQuery.setRows(Integer.valueOf(query.getLimit()));
        solrQuery.setStart(Integer.valueOf(query.getOffset()));
        //         solrQuery.addFilterQuery(buildDateFilter(query));
        QueryResponse response = solrServer.query(solrQuery);
        return getSearchResults(response);
    } catch (Exception ex) {
        throw new ResourceAccessException("", ex);
    }

}

From source file:edu.ucsb.nceas.mdqengine.solr.SolrIndex.java

License:Open Source License

/**
 * Get all indexed ids in the solr server.
 * @return an empty list if there is no index.
 * @throws SolrServerException/*from w  ww .  ja  v  a 2 s . c  om*/
 */
public List<String> getSolrIds() throws SolrServerException, IOException {
    List<String> list = new ArrayList<String>();
    SolrQuery query = new SolrQuery(IDQUERY);
    query.setRows(Integer.MAX_VALUE);
    query.setFields(ID);
    QueryResponse response = solrClient.query(query);
    SolrDocumentList docs = response.getResults();
    if (docs != null) {
        for (SolrDocument doc : docs) {
            String identifier = (String) doc.getFieldValue(ID);
            list.add(identifier);
        }
    }
    return list;
}

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.
 * //from w  ww.ja  v  a 2  s .c om
 * @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  w w w .j av  a2 s.c o  m
    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;
}