List of usage examples for org.apache.solr.client.solrj SolrQuery setRequestHandler
public SolrQuery setRequestHandler(String qt)
From source file:org.zaizi.sensefy.api.service.SolrSmartAutoCompleteService.java
License:Open Source License
/** * This part is retrieving Infix Title suggestions. It's using a specific * request handler.//from ww w . jav a2 s . c o m * * @param numberOfSuggestions * @param termToComplete * @param solrCore * @throws SolrServerException */ private List<SolrDocument> getTitleSuggestions(int numberOfSuggestions, String termToComplete, SolrServer solrCore, Principal user, boolean security) throws SolrServerException, SolrException, IOException { SensefyUser sensefyUser = SensefyUserMapper.getSensefyUserFromPrincipal(user); SolrDocumentList titleSuggestions = new SolrDocumentList(); SolrQuery titleSuggestionsQuery = new SolrQuery("\"" + termToComplete + "\""); titleSuggestionsQuery.setRequestHandler("/suggest"); titleSuggestionsQuery.setRows(numberOfSuggestions); if (security) { String filterQueryACLs = SecurityQueryBuilder.getSecurityFilterQuery(sensefyUser); titleSuggestionsQuery.setFilterQueries(filterQueryACLs); } QueryResponse titleSuggestionResponse; titleSuggestionResponse = solrCore.query(titleSuggestionsQuery); titleSuggestions = titleSuggestionResponse.getResults(); if (titleSuggestions.getNumFound() == 0) { this.buildSpellcheckQuery(titleSuggestionsQuery, termToComplete); titleSuggestionResponse = solrCore.query(titleSuggestionsQuery); titleSuggestions = titleSuggestionResponse.getResults(); } this.filterDocumentSuggestions(titleSuggestions, titleSuggestionResponse.getHighlighting()); return titleSuggestions; }
From source file:uk.co.flax.biosolr.ontology.search.solr.SolrDocumentSearch.java
License:Apache License
@Override public ResultsList<Document> searchDocuments(String term, int start, int rows, List<String> additionalFields, List<String> filters) throws SearchEngineException { ResultsList<Document> results; try {//from w w w. java2s . com SolrQuery query = new SolrQuery(term); query.setStart(start); query.setRows(rows); query.setRequestHandler(config.getDocumentRequestHandler()); List<String> queryFields = new ArrayList<>(DEFAULT_SEARCH_FIELDS); if (additionalFields != null) { queryFields.addAll(additionalFields); } if (filters != null) { query.addFilterQuery(filters.toArray(new String[filters.size()])); } query.setParam(DisMaxParams.QF, queryFields.toArray(new String[queryFields.size()])); LOGGER.debug("Query: {}", query); QueryResponse response = server.query(query); List<Document> docs; long total = 0; if (response.getGroupResponse() != null) { docs = new ArrayList<>(rows); GroupResponse gResponse = response.getGroupResponse(); for (GroupCommand gCommand : gResponse.getValues()) { total += gCommand.getNGroups(); for (Group group : gCommand.getValues()) { docs.addAll(server.getBinder().getBeans(Document.class, group.getResult())); } } } else if (response.getResults().getNumFound() == 0) { docs = new ArrayList<>(); } else { docs = response.getBeans(Document.class); total = response.getResults().getNumFound(); } results = new ResultsList<>(docs, start, (start / rows), total); } catch (SolrServerException | IOException e) { throw new SearchEngineException(e); } return results; }
From source file:uk.co.flax.biosolr.ontology.search.solr.SolrDocumentSearch.java
License:Apache License
@Override public ResultsList<Document> searchByEfoUri(int start, int rows, String term, String... uris) throws SearchEngineException { ResultsList<Document> results; try {/*from w w w. j ava 2 s . c o m*/ SolrQuery query = new SolrQuery(term + " OR " + EFO_URI_FIELD + ":" + buildUriFilter(uris)); // query.addFilterQuery(EFO_URI_FIELD + ":" + buildUriFilter(uris)); query.setStart(start); query.setRows(rows); query.setRequestHandler(config.getDocumentUriRequestHandler()); LOGGER.debug("Solr query: {}", query); QueryResponse response = server.query(query); List<Document> docs = response.getBeans(Document.class); results = new ResultsList<>(docs, start, (start / rows), response.getResults().getNumFound()); } catch (SolrServerException | IOException e) { throw new SearchEngineException(e); } return results; }
From source file:uk.co.flax.biosolr.ontology.search.solr.SolrOntologySearch.java
License:Apache License
@Override public ResultsList<OntologyEntryBean> searchOntology(String term, List<String> filters, int start, int rows, List<String> fields) throws SearchEngineException { ResultsList<OntologyEntryBean> results = null; try {//from w w w .j a v a 2 s . com SolrQuery query = new SolrQuery(term); if (filters != null && !filters.isEmpty()) { query.addFilterQuery(filters.toArray(new String[filters.size()])); } if (fields != null && !fields.isEmpty()) { query.setFields(fields.toArray(new String[fields.size()])); } query.setStart(start); query.setRows(rows); query.setRequestHandler(config.getOntologyRequestHandler()); LOGGER.trace("Ontology search URL: {}", getQueryUrl(query, config.getOntologyUrl())); QueryResponse response = server.query(query); List<OntologyEntryBean> annotations = response.getBeans(OntologyEntryBean.class); results = new ResultsList<>(annotations, rows, (start / rows), response.getResults().getNumFound()); } catch (SolrServerException e) { throw new SearchEngineException(e); } return results; }
From source file:uk.co.flax.biosolr.ontology.search.solr.SolrOntologySearch.java
License:Apache License
@Override public OntologyEntryBean findOntologyEntryByUri(String uri) throws SearchEngineException { OntologyEntryBean retVal = null;// w w w . j a v a 2 s .c o m try { SolrQuery query = new SolrQuery(uri); query.setRequestHandler(config.getOntologyNodeRequestHandler()); QueryResponse response = server.query(query); List<OntologyEntryBean> annotations = response.getBeans(OntologyEntryBean.class); if (annotations.size() > 0) { retVal = annotations.get(0); } } catch (SolrServerException e) { throw new SearchEngineException(e); } return retVal; }
From source file:uk.co.flax.ukmp.search.solr.SolrSearchEngine.java
License:Apache License
@Override public SearchResults search(Query query) throws SearchEngineException { SearchResults results;// ww w . j ava2 s. com SolrQuery sQuery = new SolrQuery(query.getQuery()); sQuery.setRows(query.getPageSize()); int start = query.getPageSize() * query.getPageNumber(); sQuery.setStart(start); sQuery.setSort(query.getSortField(), query.isSortAscending() ? ORDER.asc : ORDER.desc); if (query.getFilters() != null) { for (String fq : query.getFilters()) { sQuery.addFilterQuery(fq); } } // Set the request handler sQuery.setRequestHandler(config.getQueryHandler()); try { QueryResponse response = server.query(sQuery); SolrDocumentList docs = response.getResults(); Map<String, FacetList> availableFilters = extractAvailableFilters(response); availableFilters.putAll(extractFacetQueries(response)); Map<String, FacetList> appliedFilters = extractAppliedFilters(query); trimAvailableFilters(availableFilters, appliedFilters); SearchState search = new SearchState(query.getQuery(), query.getSortField(), query.isSortAscending(), query.getPageNumber(), availableFilters, null, appliedFilters, query.isHighlightingEnabled()); List<Tweet> tweets = extractTweets(docs, response.getHighlighting(), query.isHighlightingEnabled()); results = new SearchResults(start, docs.getNumFound(), query.getPageSize(), tweets, search); } catch (SolrServerException e) { LOGGER.error("Server exception caught for query {}: {}", sQuery.toString(), e.getMessage()); throw new SearchEngineException(e); } return results; }
From source file:uk.co.flax.ukmp.search.solr.SolrSearchEngine.java
License:Apache License
@Override public SearchResults getTextBatch(int batchNum) throws SearchEngineException { SearchResults results;//ww w . ja v a 2s . c o m TermsConfiguration termsConfig = config.getTermsConfiguration(); SolrQuery query = new SolrQuery("*:*"); query.setRequestHandler(termsConfig.getHandler()); query.setFields(termsConfig.getField()); query.setRows(termsConfig.getBatchSize()); query.setStart(batchNum * termsConfig.getBatchSize()); query.addFilterQuery(termsConfig.getFilters().toArray(new String[0])); try { QueryResponse response = server.query(query); SolrDocumentList docs = response.getResults(); // Attempt to ensure we always return at least one batch of results if (docs.getNumFound() == 0) { LOGGER.debug("No tweets found in text batch - running again without filters"); docs = runQueryWithoutFilters(query, termsConfig.getFilters()); } List<Tweet> tweets = new ArrayList<Tweet>(docs.size()); for (SolrDocument doc : docs) { Tweet tweet = new Tweet(); tweet.setText((String) doc.getFieldValue(termsConfig.getField())); tweets.add(tweet); } results = new SearchResults(query.getStart(), docs.getNumFound(), query.getRows(), tweets, null); } catch (SolrServerException e) { LOGGER.error("Server exception caught getting text batch {}: {}", batchNum, e.getMessage()); throw new SearchEngineException(e); } return results; }