List of usage examples for org.apache.solr.client.solrj SolrQuery setRequestHandler
public SolrQuery setRequestHandler(String qt)
From source file:ddf.catalog.source.solr.DynamicSchemaResolver.java
License:Open Source License
/** * Adds the fields that are already in the server to the cache. This method should be called * once the SolrServer is up to ensure the cache is synchronized with the server. * * @param server//from www.j a va 2s .c o m * the SolrServer we are working with */ public void addFieldsFromServer(SolrServer server) { if (server == null) { LOGGER.warn("Server is null, could not add fields to cache."); return; } SolrQuery query = new SolrQuery(); // numterms=0 means retrieve everything (regular or dynamic fields) query.add("numterms", "0"); /* * Adding this request handler allows us to query the schema dynamically. The name of the * request handler is provided by the schema.xml. If the name is changed in the schema.xml, * then this value must be changed as well. */ query.setRequestHandler("/admin/luke"); try { QueryResponse response = server.query(query); for (Entry<String, ?> e : ((SimpleOrderedMap<?>) (response.getResponse().get(FIELDS_KEY)))) { fieldsCache.add(e.getKey()); } } catch (SolrServerException | SolrException e) { LOGGER.warn("Could not update cache for field names.", e); } }
From source file:de.hebis.it.hds.gnd.out.AutorityRecordSolrFinder.java
License:Open Source License
/** * Do real time get./* w ww .j a v a 2s .c om*/ * * @param documentId the id of the authority record * @return a authority bean representing the authority record or null if the id does not exist. * @throws AuthorityRecordException */ private AuthorityBean doRealTimeGet(String documentId) throws AuthorityRecordException { QueryResponse response = null; SolrQuery rtg_query = new SolrQuery(); rtg_query.setRequestHandler("/get"); rtg_query.set("fl", "fullrecord"); rtg_query.setFields("id", "preferred", "synonyms"); rtg_query.set("id", documentId); try { response = server.query(rtg_query); if (response.getStatus() != 0) throw new SolrServerException("Response state: " + response.getStatus()); } catch (SolrServerException | IOException e) { e.printStackTrace(); throw new AuthorityRecordException("Solr query \"" + rtg_query.toString() + "\" can't be executed.", e); } // Workaround: RTG does not allow to call response.getBeans(AuthorityBean.class); NamedList<Object> result = response.getResponse(); if (result == null) throw new AuthorityRecordException("Solr query \"" + rtg_query.toString() + "\" has no result."); SolrDocument doc = (SolrDocument) result.get("doc"); if ((doc == null) || (doc.size() == 0)) { if (LOG.isDebugEnabled()) LOG.debug("Solr query \"" + rtg_query.toString() + "\" No doc found."); return null; } return documentObjectBinder.getBean(AuthorityBean.class, doc); }
From source file:edu.ub.ir.oof1.service.Solr.java
/** * Used only for searching a single news article * * @param _query/*from ww w. j ava 2 s . com*/ * @param resultType * @return */ @Override public List<AbstractModel> query(String _query, Class<? extends AbstractModel> resultType) { List<AbstractModel> out = new ArrayList<AbstractModel>(); SolrQuery query = new SolrQuery(); query.setQuery(_query); query.setRequestHandler(Properties.SOLR_QUERY_HANDLER); try { QueryResponse response = SERVER.query(query); SolrDocumentList docs = response.getResults(); for (SolrDocument doc : docs) { AbstractModel model = null; String news_id = (String) doc.getFieldValue("news_id"); //System.out.println("news_id : " + news_id); //System.out.println("highlighting : " + response.getHighlighting().get(news_id)); if (news_id != null && response.getHighlighting().get(news_id) != null) { model = getModelForSolrDoc(doc, resultType, response.getHighlighting().get(news_id)); } else { model = getModelForSolrDoc(doc, resultType); } out.add(model); } } catch (Exception e) { e.printStackTrace(); } return out; }
From source file:edu.ub.ir.oof1.service.Solr.java
/** * Used only for searching a single news article * * @param _query// w ww .j a va 2 s. c om * @return */ public Suggestions getAutoSuggest(String _query) { Suggestions out = new Suggestions(); List<String> suggs = new ArrayList<String>(); System.out.println("Solr query : " + _query); SolrQuery query = new SolrQuery(); query.setQuery(_query); query.setRequestHandler(Properties.SOLR_AUTO_SUGGEST_HANDLER); try { QueryResponse response = SERVER.query(query); suggs = spellcheck(response); System.out.println("Solr sugg : " + suggs); out.setSuggestions(suggs); } catch (Exception e) { e.printStackTrace(); } System.out.println("Final Solr: " + out); return out; }
From source file:edu.ub.ir.oof1.service.Solr.java
/** * Used for searching multiple news articles * * @param _query//from w ww . j a v a 2 s . c o m * @param resultType * @param _user_id * @return */ @Override public NewsResults query(String _query, Class<? extends AbstractModel> resultType, String _user_id) { List<News> out = new ArrayList<News>(); List<String> spellCheck = new ArrayList<String>(); boolean queryBack = false; SolrQuery query = new SolrQuery(); query.setQuery(_query + " AND " + _user_id); query.setRequestHandler(Properties.SOLR_QUERY_HANDLER); try { QueryResponse response = SERVER.query(query); SolrDocumentList docs = response.getResults(); System.out.println("***Before queryBack***"); queryBack = queryConstruct(docs, out, _user_id, response, resultType); if (queryBack) { System.out.println("Entered queryback"); query = new SolrQuery(); query.setQuery(_query + " NOT " + _user_id); query.setRequestHandler(Properties.SOLR_QUERY_HANDLER); response = SERVER.query(query); docs = response.getResults(); queryBack = queryConstruct(docs, out, _user_id, response, resultType); if (queryBack) { query = new SolrQuery(); query.setQuery(_query); query.setRequestHandler("/spellcheck"); response = SERVER.query(query); spellCheck = spellcheck(response); } } } catch (Exception e) { e.printStackTrace(); } return new NewsResults(out, spellCheck); }
From source file:edu.ub.ir.oof1.service.Solr.java
public void updateDocClick(String _user_id, String _news_id) { try {/*from w ww. j ava2s . c om*/ SolrInputDocument updateDoc = new SolrInputDocument(); SolrQuery query = new SolrQuery(); query.setQuery("news_id:" + _news_id); query.setRequestHandler(Properties.SOLR_QUERY_HANDLER); QueryResponse response = SERVER.query(query); SolrDocumentList docs = response.getResults(); if (docs == null) { return; } if (docs.size() < 1) { return; } for (String attribute : docs.get(0).getFieldNames()) { //Retain all the records except userCount and Count if (!attribute.equals("user_count") && !attribute.equals("count") && !attribute.equals("score") && !attribute.equals("_version_")) { updateDoc.addField(attribute, docs.get(0).getFieldValue(attribute)); } else if (attribute.equals("user_count")) { List<String> userCount = (List<String>) docs.get(0).getFieldValue("user_count"); List<String> updatedCount = new ArrayList<String>(); boolean userFound = false; if (userCount != null && userCount.size() > 0) { for (String user : userCount) { String[] buffer = user.split(":"); if (buffer.length > 1) { if (buffer[0].equals(_user_id)) { int count = Integer.parseInt(buffer[1]); updatedCount.add(buffer[0] + ":" + ++count); userFound = true; } else { //This is not the user who read this article at the moment updatedCount.add(user); } } else { //Means this user is reading this article for the first time or //This is the first time any user is reading this article userFound = true; updatedCount.add(_user_id + ":" + 1); } } if (userFound == false) //Means this user is reading this article for the first time { updatedCount.add(_user_id + ":" + 1); } } else { //This logic will not happen in real time. Added for worst-case scenario updatedCount.add(_user_id + ":" + 1); } updateDoc.addField("user_count", updatedCount); } else if (attribute.equals("count")) { //Increment the global count for this article. //Used to track the most viewed articles irrespective of the user Map<String, Integer> countIncMap = new HashMap<String, Integer>(1); countIncMap.put("inc", 1); updateDoc.addField("count", countIncMap); } } SERVER.add(updateDoc); SERVER.commit(); } catch (Exception e) { e.printStackTrace(); } }
From source file:eu.europeana.suggest.QueryCompletionClient.java
License:Apache License
public Response getCompletions(String query, int n, String language, boolean addExplain) throws SolrServerException { if (language == null || language.isEmpty()) { logger.info("no language for query {}, using default English. ", language, query); return getCompletions(query, n); }//from w w w . ja v a2s. c om language = language.toLowerCase(); if (!language.contains(language)) { logger.info("unknown language {} for query {}, using default English. ", language, query); language = "en"; } SolrQuery sq = new SolrQuery(query); if (language.equals("en")) { sq.setRequestHandler("/suggest"); } else { sq.setRequestHandler("/" + language + "_suggest"); } // set the results number sq.setRows(n); if (addExplain) { // if requested add the explain (how the score is computed) to the // results, used in the logging sq.setFields("*", "[explain]"); } // send the query to the server, each document returned is an entity QueryResponse qr = server.query(sq); SolrDocumentList sdl = qr.getResults(); Response result = new Response(query); result.setItemCount(n); result.setTotalResults(sdl.getNumFound()); result.setLanguage(language); List<Suggestion> annotations = new ArrayList<Suggestion>(); for (SolrDocument sd : sdl) { Suggestion annotation = new Suggestion(); String enTitle = (decode((String) sd.get("en_title"))); // short titles usually are not really relevant and have high // ranking since they are ambigous.. remove them :) if (enTitle.length() <= 5) continue; int wikipediaClicks = ((Integer) sd.get("wikipedia_clicks")); int europeanaDf = ((Integer) sd.get("europeana_df")); int enrichment = ((Integer) sd.get("enrichment")); String type = (decode((String) sd.get("type"))).toLowerCase(); annotation.setType(type); annotation.addPrefLabel("en", enTitle); annotation.setEuropeana_df(europeanaDf); annotation.setWikipedia_clicks(wikipediaClicks); annotation.setEnrichment(enrichment); if (addExplain) { annotation.setExplain((String) sd.get("[explain]")); } for (String lang : languages) { String label = decode((String) sd.get(lang + "_title")); if (label == null || label.isEmpty()) continue; // if (label == null || label.isEmpty()) { // label = enTitle; // // } annotation.addPrefLabel(lang, label); } annotation.setUri((String) sd.get("uri")); annotation.setImage(((String) sd.get("uri")).replace("http://dbpedia.org/resource/", "http://wikiname2image.herokuapp.com/")); annotation.setUri(annotation.getUri().replace("http://dbpedia.org/resource/", "http://data.europeana.eu/" + type + "/")); annotation.setSearch("entity:" + annotation.getUri()); annotations.add(annotation); } result.setSuggestions(annotations); return result; }
From source file:eumetsat.pn.solr.webapp.SolrApp.java
@Override protected Map<String, Object> describeProduct(String id) throws MalformedURLException, ParseException { Map<String, Object> data = new HashMap<>(); //URL url = new URL(this.productEndpointUrlString + "?" + id); SolrQuery query = new SolrQuery(); query.setRequestHandler(productEndpointUrlString); query.set("id", id); query.setFields("*"); log.trace("Solr query: {}", query); try {//w w w . ja v a 2 s . co m QueryResponse response = solr.query(query); SolrDocument result = (SolrDocument) response.getResponse().get("doc"); log.trace("Result document: {}", result); data.put("id", result.getFieldValue("id")); data.put("title", result.getFieldValue("title")); data.put("abstract", result.getFieldValue("description")); if (result.getFieldValue("thumbnail_s") != null) { data.put("thumbnail", result.getFieldValue("thumbnail_s")); } if (result.getFieldValue("status_s") != null) { data.put("status", result.getFieldValue("status_s")); } if (result.getFieldValue("satellite_s") != null) { data.put("satellite", result.get("satellite_s")); } if (result.getFieldValue("keywords") != null) { data.put("keywords", Joiner.on(", ").join((Collection<String>) result.get("keywords"))); } if (result.getFieldValue("distribution_ss") != null) { data.put("distribution", Joiner.on(", ").join((Collection<String>) result.get("distribution_ss"))); } if (result.getFieldValue("category") != null) { data.put("category", Joiner.on(", ").join((Collection<String>) result.getFieldValue("category"))); } if (result.getFieldValue("instrument_s") != null) { data.put("instrument", result.getFieldValue("instrument_s")); } if (result.getFieldValue("boundingbox") != null) { data.put("boundingbox", result.getFieldValue("boundingbox")); } if (result.getFieldValue("address_s") != null) { data.put("address", result.getFieldValue("address_s")); } if (result.getFieldValue("email_s") != null) { data.put("email", result.getFieldValue("email_s")); } if (result.getFieldValue("societalBenefitArea_ss") != null) { data.put("sba", Joiner.on(", ").join((Collection<String>) result.getFieldValue("societalBenefitArea_ss"))); } if (result.getFieldValue("xmldoc") != null) { data.put("xmldoc", result.getFieldValue("xmldoc")); } } catch (SolrServerException e) { log.error("Error querying Solr", e); addMessage(data, MessageLevel.danger, "Error during search: " + e.getMessage()); // errorResponse(e); } return data; }
From source file:fr.cnes.sitools.metacatalogue.resources.opensearch.OpensearchDescribeResource.java
License:Open Source License
/** * Create a description for the metacatalogue containing all the request parameters, their types and enumeration * /*ww w . ja v a 2s . c o m*/ * @return a description for the metacatalogue */ private Describe createDescribe() { Describe describe = new Describe(); SolrServer server = SolRUtils.getSolRServer(solrCoreUrl); if (server == null) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, "Solr core : " + solrCoreUrl + " not reachable"); } LukeRequest request = new LukeRequest(); // request.setNumTerms(maxTopTerms); try { List<Filter> filters = new ArrayList<Filter>(); LukeResponse response = request.process(server); int numDocs = response.getNumDocs(); Map<String, LukeResponse.FieldInfo> fields = response.getFieldInfo(); for (Entry<String, LukeResponse.FieldInfo> field : fields.entrySet()) { LukeResponse.FieldInfo fieldInfo = field.getValue(); String fieldName = fieldInfo.getName(); boolean indexed = false; EnumSet<FieldFlag> flags = FieldInfo.parseFlags(fieldInfo.getSchema()); indexed = (flags != null && flags.contains(FieldFlag.INDEXED)); if (indexed && addToDescription(fieldName)) { // make a terms query to get the top terms SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); query.setTerms(true); query.addTermsField(fieldName); query.setTermsLimit(maxTopTerms); query.setTermsMinCount(1); QueryRequest termsRequest = new QueryRequest(query); TermsResponse termsResponse = termsRequest.process(server).getTermsResponse(); List<Term> terms = termsResponse.getTerms(fieldName); Filter filter = new Filter(); filter.setId(fieldName); filter.setTitle(fieldName); if (canBeCategorised(terms)) { filter.setType(FilterType.enumeration); filter.setPopulation(numDocs); filter.setSon(createSons(terms)); } else { filter.setType(getFilterType(fieldInfo.getType())); } filters.add(filter); } } describe.setFilters(filters); return describe; } catch (SolrServerException e) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e); } catch (IOException e) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e); } }
From source file:fr.cnes.sitools.metacatalogue.resources.suggest.OpensearchSuggestResource.java
License:Open Source License
@Get public List<SuggestDTO> suggest(Variant variant) { String query = getRequest().getResourceRef().getQueryAsForm().getFirstValue("q"); if (query == null || query.isEmpty()) { getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "No suggestion parameter"); return null; }/* ww w. j a v a 2 s . com*/ try { ThesaurusSearcher searcher = new ThesaurusSearcher(thesaurusName); List<SuggestDTO> suggests = new ArrayList<SuggestDTO>(); List<Concept> concepts = searcher.searchNarrowersBroader(query + "*", getLanguage()); for (Concept concept : concepts) { SuggestDTO suggestDTO = new SuggestDTO(); suggestDTO.setSuggestion(concept.getProperties().get("prefLabelNarrower").toString()); suggestDTO.setSuggestionAltLabel(concept.getProperties().get("altLabelNarrower").toString()); suggests.add(suggestDTO); } // get suggestion number in the metacatalogue then if (suggests.size() > 0) { SolrServer server = getSolrServer(getContext()); SolrQuery solrQuery = new SolrQuery(); solrQuery.setRequestHandler("/terms"); solrQuery.setTerms(true); solrQuery.setTermsLimit(-1); solrQuery.addTermsField(MetacatalogField._CONCEPTS.getField()); QueryResponse rsp; try { QueryRequest request = new QueryRequest(solrQuery); rsp = request.process(server); TermsResponse termsResponse = rsp.getTermsResponse(); List<TermsResponse.Term> terms = termsResponse.getTerms(MetacatalogField._CONCEPTS.getField()); Map<String, Long> map = createMapFromTerms(terms); Long nb = null; for (SuggestDTO suggest : suggests) { if (map != null) { nb = map.get(suggest.getSuggestionAltLabel()); } if (nb == null) { suggest.setNb(0); } else { suggest.setNb(nb); } } } catch (SolrServerException e) { getLogger().warning("Cannot access Solr server no suggestion number returned"); } } return suggests; } catch (IOException e) { getResponse().setStatus(Status.SERVER_ERROR_INTERNAL, "Cannot read Thesaurs : " + thesaurusName); return null; } }