List of usage examples for org.apache.solr.client.solrj SolrQuery setRows
public SolrQuery setRows(Integer rows)
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; }