List of usage examples for org.apache.solr.client.solrj SolrQuery addFacetField
public SolrQuery addFacetField(String... fields)
From source file:io.logspace.hq.core.solr.agent.SolrAgentService.java
License:Open Source License
@Override public Set<String> getEventPropertyNames(String... globalAgentIds) { SolrQuery solrQuery = new SolrQuery(ALL_DOCS_QUERY); solrQuery.setRows(0);/*from w ww .ja va 2s .c o m*/ StringBuilder globalAgentIdFilterQuery = new StringBuilder(); globalAgentIdFilterQuery.append(FIELD_GLOBAL_AGENT_ID); globalAgentIdFilterQuery.append(":("); for (String eachGlobalAgentId : globalAgentIds) { globalAgentIdFilterQuery.append(escapeSolr(eachGlobalAgentId)); globalAgentIdFilterQuery.append(" OR "); } globalAgentIdFilterQuery.setLength(globalAgentIdFilterQuery.length() - 4); globalAgentIdFilterQuery.append(')'); solrQuery.addFilterQuery(globalAgentIdFilterQuery.toString()); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(FIELD_PROPERTY_ID); try { QueryResponse response = this.solrClient.query(solrQuery); Set<String> result = new TreeSet<>(); for (Count eachCount : response.getFacetField(FIELD_PROPERTY_ID).getValues()) { result.add(eachCount.getName()); } return result; } catch (SolrException | SolrServerException | IOException e) { throw new DataRetrievalException("Failed to retrieve event property names", e); } }
From source file:io.logspace.hq.core.solr.agent.SolrAgentService.java
License:Open Source License
@Override public Suggestion getSuggestion(SuggestionInput input) { TimeTracker timeTracker = new TimeTracker(); SolrQuery solrQuery = new SolrQuery(ALL_DOCS_QUERY); solrQuery.setRows(0);// w w w . ja v a 2 s . c o m if (!StringUtils.isBlank(input.getText())) { solrQuery.addFilterQuery(FIELD_TOKENIZED_SEARCH_FIELD + ":" + escapeSolr(input.getText()) + "*"); } addFilterQuery(solrQuery, FIELD_PROPERTY_ID, input.getPropertyId()); addFilterQuery(solrQuery, FIELD_SPACE, input.getSpaceId()); addFilterQuery(solrQuery, FIELD_SYSTEM, input.getSystemId()); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(FIELD_GLOBAL_AGENT_ID); try { Suggestion result = new Suggestion(); QueryResponse response = this.solrClient.query(solrQuery); FacetField globalAgentIdFacetField = response.getFacetField(FIELD_GLOBAL_AGENT_ID); for (Count eachValue : globalAgentIdFacetField.getValues()) { String globalAgentId = eachValue.getName(); result.addAgentDescription(this.getAgentDescription(globalAgentId)); } result.setExecutionTime(timeTracker.getElapsed(MILLISECONDS)); return result; } catch (SolrException | SolrServerException | IOException e) { throw new DataRetrievalException("Failed to create suggestions", e); } }
From source file:io.logspace.hq.solr.SolrEventService.java
License:Open Source License
@Override public Suggestion getSuggestion(SuggestionInput input) { TimeTracker timeTracker = new TimeTracker(); SolrQuery solrQuery = new SolrQuery(ALL_DOCS_QUERY); solrQuery.setRows(0);/*w w w .j a va 2s . c o m*/ if (!StringUtils.isBlank(input.getText())) { solrQuery.addFilterQuery(FIELD_TOKENIZED_SEARCH_FIELD + ":" + escapeSolr(input.getText()) + "*"); } this.addFilterQuery(solrQuery, FIELD_PROPERTY_ID, input.getPropertyId()); this.addFilterQuery(solrQuery, FIELD_SPACE, input.getSpaceId()); this.addFilterQuery(solrQuery, FIELD_SYSTEM, input.getSystemId()); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(FIELD_GLOBAL_AGENT_ID); try { Suggestion result = new Suggestion(); QueryResponse response = this.solrClient.query(solrQuery); FacetField globalAgentIdFacetField = response.getFacetField(FIELD_GLOBAL_AGENT_ID); for (Count eachValue : globalAgentIdFacetField.getValues()) { String globalAgentId = eachValue.getName(); result.addAgentDescription(this.getAgentDescription(globalAgentId)); } result.setExecutionTime(timeTracker.getElapsed(MILLISECONDS)); return result; } catch (SolrException | SolrServerException | IOException e) { throw new DataRetrievalException("Failed to create suggestions", e); } }
From source file:io.vertigo.dynamo.plugins.search.solr.SolrStatement.java
License:Apache License
private static void appendFacetDefinition(final FacetedQueryDefinition queryDefinition, final SolrQuery solrQuery, final IndexFieldNameResolver indexFieldNameResolver) { Assertion.checkNotNull(solrQuery);//from w ww .j a va2s . co m //--------------------------------------------------------------------- //Activation des facettes final boolean hasFacet = !queryDefinition.getFacetDefinitions().isEmpty(); solrQuery.setFacet(hasFacet); for (final FacetDefinition facetDefinition : queryDefinition.getFacetDefinitions()) { //Rcupration des noms des champs correspondant aux facettes. final DtField dtField = facetDefinition.getDtField(); if (facetDefinition.isRangeFacet()) { //facette par range for (final FacetValue facetRange : facetDefinition.getFacetRanges()) { solrQuery.addFacetQuery(translateToSolr(facetRange.getListFilter(), indexFieldNameResolver)); } } else { //facette par field solrQuery.addFacetField(indexFieldNameResolver.obtainIndexFieldName(dtField)); } } }
From source file:kbSRU.kbSRU.java
License:Open Source License
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(XML_RESPONSE_HEADER); // Talkback happens in XML form. response.setCharacterEncoding("UTF-8"); // Unicode++ request.setCharacterEncoding("UTF-8"); PrintWriter out = null; // The talkback buffer. // handle startrecord Integer startRecord = 0;/*from w ww. ja v a 2 s. c o m*/ if (!(request.getParameter("startRecord") == null)) { try { startRecord = Integer.parseInt(request.getParameter("startRecord")) - 1; } catch (NumberFormatException e) { startRecord = 0; } } // maximumrecords Integer maximumRecords = Integer.parseInt(this.config.getProperty("default_maximumRecords")); if (!(request.getParameter("maximumRecords") == null)) { maximumRecords = Integer.parseInt(request.getParameter("maximumRecords")); } // operation String operation = request.getParameter("operation"); // x_collection String x_collection = request.getParameter("x-collection"); if (x_collection == null) x_collection = this.config.getProperty("default_x_collection"); if (x_collection == null) operation = null; // sortkeys String sortKeys = request.getParameter("sortKeys"); // sortorder String sortOrder = request.getParameter("sortOrder"); // recordschema String recordSchema = request.getParameter("recordSchema"); if (recordSchema == null) recordSchema = "dc"; if (recordSchema.equalsIgnoreCase("dcx")) { recordSchema = "dcx"; } if (recordSchema.equalsIgnoreCase("solr")) { recordSchema = "solr"; } // query request String query = request.getParameter("query"); String q = request.getParameter("q"); // who is requestor ? String remote_ip = request.getHeader("X-FORWARDED-FOR"); if (remote_ip == null) { remote_ip = request.getRemoteAddr().trim(); } else { remote_ip = request.getHeader("X-FORWARDED-FOR"); } // handle debug Boolean debug = Boolean.parseBoolean(request.getParameter("debug")); if (!debug) { out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true); } // handle query if ((query == null) && (q != null)) { query = q; } else { if ((query != null) && (q == null)) { q = query; } else { operation = null; } } // handle operation if (operation == null) { if (query != null) { operation = "searchRetrieve"; } else { operation = "explain"; } } // searchRetrieve if (operation.equalsIgnoreCase("searchRetrieve")) { if (query == null) { operation = "explain"; log.debug(operation + ":" + query); } } // start talking back. String[] sq = { "" }; String solrquery = ""; // facet String facet = null; List<FacetField> fct = null; if (request.getParameter("facet") != null) { facet = request.getParameter("facet"); log.debug("facet : " + facet); } if (operation == null) { operation = "searchretrieve"; } else { // explain response if (operation.equalsIgnoreCase("explain")) { log.debug("operation = explain"); out.write("<srw:explainResponse xmlns:srw=\"http://www.loc.gov/zing/srw/\">"); out.write("</srw:explainResponse>"); } else { // DEBUG routine operation = "searchretrieve"; String triplequery = null; if (query.matches(".*?\\[.+?\\].*?")) { // New symantic syntax triplequery = symantic_query(query); query = query.split("\\[")[0] + " " + triplequery; log.fatal(triplequery); solrquery = CQLtoLucene.translate(query, log, config); } else { solrquery = CQLtoLucene.translate(query, log, config); } log.debug(solrquery); if (debug == true) { response.setContentType(HTML_RESPONSE_HEADER); out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true); out.write("<html><body>\n\n"); out.write("'" + remote_ip + "'<br>\n"); out.write("<form action='http://www.kbresearch.nl/kbSRU'>"); out.write("<input type=text name=q value='" + query + "' size=120>"); out.write("<input type=hidden name=debug value=True>"); out.write("<input type=submit>"); out.write("<table border=1><tr><td>"); out.write("q</td><td>" + query + "</td></tr><tr>"); out.write("<td>query out</td><td>" + URLDecoder.decode(solrquery) + "</td></tr>"); out.write("<tr><td>SOLR_URL</td><td> <a href='" + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl") + "/?q=" + solrquery + "'>" + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl") + "/select/?q=" + solrquery + "</a><br>" + this.config.getProperty("solr_url") + solrquery + "</td></tr>"); out.write("<b>SOLR_QUERY</b> : <BR> <iframe width=900 height=400 src='" + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl") + "/../?q=" + solrquery + "'></iframe><BR>"); out.write("<b>SRU_QUERY</b> : <BR> <a href=" + this.config.getProperty("baseurl") + "?q=" + query + "'>" + this.config.getProperty("baseurl") + "?q=" + query + "</a><br><iframe width=901 height=400 src='http://www.kbresearch.nl/kbSRU/?q=" + query + "'></iframe><BR>"); out.write("<br><b>JSRU_QUERY</b> : <BR><a href='http://jsru.kb.nl/sru/?query=" + query + "&x-collection=" + x_collection + "'>http://jsru.kb.nl/sru/?query=" + query + "&x-collection=GGC</a><br><iframe width=900 height=400 src='http://jsru.kb.nl/sru/?query=" + query + "&x-collection=GGC'></iframe>"); } else { // XML SearchRetrieve response String url = this.config .getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl"); String buffer = ""; CommonsHttpSolrServer server = null; server = new CommonsHttpSolrServer(url); log.fatal("URSING " + url); server.setParser(new XMLResponseParser()); int numfound = 0; try { SolrQuery do_query = new SolrQuery(); do_query.setQuery(solrquery); do_query.setRows(maximumRecords); do_query.setStart(startRecord); if ((sortKeys != null) && (sortKeys.length() > 1)) { if (sortOrder != null) { if (sortOrder.equals("asc")) { do_query.setSortField(sortKeys, SolrQuery.ORDER.asc); } if (sortOrder.equals("desc")) { do_query.setSortField(sortKeys, SolrQuery.ORDER.desc); } } else { for (String str : sortKeys.trim().split(",")) { str = str.trim(); if (str.length() > 1) { if (str.equals("date")) { do_query.setSortField("date_date", SolrQuery.ORDER.desc); log.debug("SORTORDERDEBUG | DATE! " + str + " | "); break; } else { do_query.setSortField(str + "_str", SolrQuery.ORDER.asc); log.debug("SORTORDERDEBUG | " + str + " | "); break; } } } } } if (facet != null) { if (facet.indexOf(",") > 1) { for (String str : facet.split(",")) { if (str.indexOf("date") > 1) { do_query.addFacetField(str); } else { do_query.addFacetField(str); } //do_query.setParam("facet.method", "enum"); } //q.setFacetSort(false); } else { do_query.addFacetField(facet); } do_query.setFacet(true); do_query.setFacetMinCount(1); do_query.setFacetLimit(-1); } log.fatal(solrquery); QueryResponse rsp = null; boolean do_err = false; boolean do_sugg = false; SolrDocumentList sdl = null; String diag = ""; StringBuffer suggest = new StringBuffer(""); String content = "1"; SolrQuery spellq = do_query; try { rsp = server.query(do_query); } catch (SolrServerException e) { String header = this.SRW_HEADER.replaceAll("\\$numberOfRecords", "0"); out.write(header); diag = this.SRW_DIAG.replaceAll("\\$error", e.getMessage()); do_err = true; rsp = null; } log.fatal("query done.."); if (!(do_err)) { // XML dc response SolrDocumentList docs = rsp.getResults(); numfound = (int) docs.getNumFound(); int count = startRecord; String header = this.SRW_HEADER.replaceAll("\\$numberOfRecords", Integer.toString(numfound)); out.write(header); out.write("<srw:records>"); Iterator<SolrDocument> iter = rsp.getResults().iterator(); while (iter.hasNext()) { count += 1; if (recordSchema.equalsIgnoreCase("dc")) { SolrDocument resultDoc = iter.next(); content = (String) resultDoc.getFieldValue("id"); out.write("<srw:record>"); out.write("<srw:recordPacking>xml</srw:recordPacking>"); out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>"); out.write( "<srw:recordData xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/loc.terms/relators/OTH\" xmlns:facets=\"info:srw/extension/4/facets\" >"); StringBuffer result = new StringBuffer(""); construct_lucene_dc(result, resultDoc); out.write(result.toString()); out.write("</srw:recordData>"); out.write("<srw:recordPosition>" + Integer.toString(count) + "</srw:recordPosition>"); out.write("</srw:record>"); } if (recordSchema.equalsIgnoreCase("solr")) { SolrDocument resultDoc = iter.next(); content = (String) resultDoc.getFieldValue("id"); out.write("<srw:record>"); out.write("<srw:recordPacking>xml</srw:recordPacking>"); out.write("<srw:recordSchema>info:srw/schema/1/solr</srw:recordSchema>"); out.write("<srw:recordData xmlns:expand=\"http://www.kbresearch.nl/expand\">"); StringBuffer result = new StringBuffer(""); construct_lucene_solr(result, resultDoc); out.write(result.toString()); out.write("</srw:recordData>"); out.write("<srw:recordPosition>" + Integer.toString(count) + "</srw:recordPosition>"); out.write("</srw:record>"); } if (recordSchema.equalsIgnoreCase("dcx")) { // XML dcx response out.write("<srw:record>"); out.write("<srw:recordPacking>xml</srw:recordPacking>"); out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>"); out.write( "<srw:recordData><srw_dc:dc xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/marc.relators/\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >"); SolrDocument resultDoc = iter.next(); content = (String) resultDoc.getFieldValue("id"); String dcx_data = helpers.getOAIdcx( "http://services.kb.nl/mdo/oai?verb=GetRecord&identifier=" + content, log); if (x_collection.equalsIgnoreCase("ggc-thes")) { dcx_data = helpers.getOAIdcx( "http://serviceso.kb.nl/mdo/oai?verb=GetRecord&identifier=" + content, log); } if (!(dcx_data.length() == 0)) { out.write(dcx_data); } else { // Should not do this!! out.write("<srw:record>"); out.write("<srw:recordPacking>xml</srw:recordPacking>"); out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>"); out.write( "<srw:recordData xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/loc.terms/relators/OTH\" >"); StringBuffer result = new StringBuffer(""); construct_lucene_dc(result, resultDoc); out.write(result.toString()); out.write("</srw:recordData>"); out.write("<srw:recordPosition>" + Integer.toString(count) + "</srw:recordPosition>"); out.write("</srw:record>"); } out.write("</srw_dc:dc>"); StringBuffer expand_data; boolean expand = false; if (content.startsWith("GGC-THES:AC:")) { String tmp_content = ""; tmp_content = content.replaceFirst("GGC-THES:AC:", ""); log.fatal("calling get"); expand_data = new StringBuffer( helpers.getExpand("http://www.kbresearch.nl/general/lod_new/get/" + tmp_content + "?format=rdf", log)); log.fatal("get finini"); if (expand_data.toString().length() > 4) { out.write( "<srw_dc:expand xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >"); out.write(expand_data.toString()); expand = true; } } else { expand_data = new StringBuffer(helpers .getExpand("http://www.kbresearch.nl/ANP.cgi?q=" + content, log)); if (expand_data.toString().length() > 0) { if (!expand) { out.write( "<srw_dc:expand xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >"); expand = true; } out.write(expand_data.toString()); } } if (expand) { out.write("</srw_dc:expand>"); } out.write("</srw:recordData>"); out.write("<srw:recordPosition>" + Integer.toString(count) + "</srw:recordPosition>"); out.write("</srw:record>"); } } } if ((do_err) || (numfound == 0)) { log.fatal("I haz suggestions"); try { spellq.setParam("spellcheck", true); spellq.setQueryType("/spell"); server = new CommonsHttpSolrServer(url); rsp = server.query(spellq); sdl = rsp.getResults(); SpellCheckResponse spell; spell = rsp.getSpellCheckResponse(); List<SpellCheckResponse.Suggestion> suggestions = spell.getSuggestions(); if (suggestions.isEmpty() == false) { suggest.append("<srw:extraResponseData>"); suggest.append("<suggestions>"); for (SpellCheckResponse.Suggestion sugg : suggestions) { suggest.append("<suggestionfor>" + sugg.getToken() + "</suggestionfor>"); for (String item : sugg.getSuggestions()) { suggest.append("<suggestion>" + item + "</suggestion>"); } suggest.append("</suggestions>"); suggest.append("</srw:extraResponseData>"); } do_sugg = true; } } catch (Exception e) { rsp = null; //log.fatal(e.toString()); } ; } ; if (!do_err) { if (facet != null) { try { fct = rsp.getFacetFields(); out.write("<srw:facets>"); for (String str : facet.split(",")) { out.write("<srw:facet>"); out.write("<srw:facetType>"); out.write(str); out.write("</srw:facetType>"); for (FacetField f : fct) { log.debug(f.getName()); //if (f.getName().equals(str+"_str") || (f.getName().equals(str+"_date")) ) { List<FacetField.Count> facetEnties = f.getValues(); for (FacetField.Count fcount : facetEnties) { out.write("<srw:facetValue>"); out.write("<srw:valueString>"); out.write(helpers.xmlEncode(fcount.getName())); out.write("</srw:valueString>"); out.write("<srw:count>"); out.write(Double.toString(fcount.getCount())); out.write("</srw:count>"); out.write("</srw:facetValue>"); // } } } out.write("</srw:facet>"); } out.write("</srw:facets>"); startRecord += 1; } catch (Exception e) { } //log.fatal(e.toString()); } } } else { out.write(diag); } out.write("</srw:records>"); // SearchRetrieve response footer String footer = this.SRW_FOOTER.replaceAll("\\$query", helpers.xmlEncode(query)); footer = footer.replaceAll("\\$startRecord", (startRecord).toString()); footer = footer.replaceAll("\\$maximumRecords", maximumRecords.toString()); footer = footer.replaceAll("\\$recordSchema", recordSchema); if (do_sugg) { out.write(suggest.toString()); } out.write(footer); } catch (MalformedURLException e) { out.write(e.getMessage()); } catch (IOException e) { out.write("TO ERR is Human"); } } } } out.close(); }
From source file:net.yacy.cora.federate.solr.connector.AbstractSolrConnector.java
License:Open Source License
/** * get facets of the index: a list of lists with values that are most common in a specific field * @param query a query which is performed to get the facets * @param fields the field names which are selected as facet * @param maxresults the maximum size of the resulting maps * @return a map with key = facet field name, value = an ordered map of field values for that field * @throws IOException//from w w w .jav a 2 s . co m */ @Override public LinkedHashMap<String, ReversibleScoreMap<String>> getFacets(String query, int maxresults, final String... fields) throws IOException { // construct query assert fields.length > 0; final SolrQuery params = new SolrQuery(); params.setQuery(query); params.setRows(0); params.setStart(0); params.setFacet(true); params.setFacetMinCount(1); // there are many 0-count facets in the uninverted index cache params.setFacetLimit(maxresults); params.setFacetSort(FacetParams.FACET_SORT_COUNT); params.setParam(FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_fc /*FACET_METHOD_fcs*/); params.setFields(fields); params.clearSorts(); params.setIncludeScore(false); for (String field : fields) params.addFacetField(field); // query the server QueryResponse rsp = getResponseByParams(params); LinkedHashMap<String, ReversibleScoreMap<String>> facets = new LinkedHashMap<String, ReversibleScoreMap<String>>( fields.length); for (String field : fields) { FacetField facet = rsp.getFacetField(field); ReversibleScoreMap<String> result = new ClusteredScoreMap<String>(UTF8.insensitiveUTF8Comparator); List<Count> values = facet.getValues(); if (values == null) continue; for (Count ff : values) if (ff.getCount() > 0) result.set(ff.getName(), (int) ff.getCount()); facets.put(field, result); } return facets; }
From source file:net.yacy.search.query.QueryParams.java
License:Open Source License
private SolrQuery getBasicParams(boolean getFacets, List<String> fqs) { final SolrQuery params = new SolrQuery(); params.setParam("defType", "edismax"); params.setParam(DisMaxParams.QF, CollectionSchema.text_t.getSolrFieldName() + "^1.0"); params.setStart(this.offset); params.setRows(this.itemsPerPage); params.setFacet(false);// w w w .j a v a 2 s . c o m if (this.ranking.coeff_date == RankingProfile.COEFF_MAX) { // set a most-recent ordering params.setSort(new SortClause(CollectionSchema.last_modified.getSolrFieldName(), SolrQuery.ORDER.desc)); //params.setSortField(CollectionSchema.last_modified.getSolrFieldName(), ORDER.desc); // deprecated in Solr 4.2 } // add site facets fqs.addAll(getFacetsFilterQueries()); if (fqs.size() > 0) { params.setFilterQueries(fqs.toArray(new String[fqs.size()])); } // set facet query attributes if (getFacets && this.facetfields.size() > 0) { params.setFacet(true); params.setFacetMinCount(1); params.setFacetLimit(FACETS_STANDARD_MAXCOUNT); params.setFacetSort(FacetParams.FACET_SORT_COUNT); params.setParam(FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_fcs); for (String field : this.facetfields) params.addFacetField("{!ex=" + field + "}" + field); // params.addFacetField("{!ex=" + field + "}" + field); if (this.facetfields.contains(CollectionSchema.dates_in_content_dts.name())) { params.setParam("facet.range", CollectionSchema.dates_in_content_dts.name()); @SuppressWarnings({ "static-access", "deprecation" }) String start = TrieDateField .formatExternal(new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L * 3)); @SuppressWarnings({ "static-access", "deprecation" }) String end = TrieDateField .formatExternal(new Date(System.currentTimeMillis() + 1000L * 60L * 60L * 24L * 3)); params.setParam( "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.start", start); params.setParam( "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.end", end); params.setParam( "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.gap", "+1DAY"); params.setParam("f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.sort", "index"); params.setParam("f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.limit", Integer.toString(FACETS_DATE_MAXCOUNT)); // the year constraint should cause that limitation already } //for (String k: params.getParameterNames()) {ArrayList<String> al = new ArrayList<>(); for (String s: params.getParams(k)) al.add(s); System.out.println("Parameter: " + k + "=" + al.toString());} //http://localhost:8090/solr/collection1/select?q=*:*&rows=0&facet=true&facet.field=dates_in_content_dts&f.dates_in_content_dts.facet.limit=730&f.dates_in_content_dts.facet.sort=index } else { params.setFacet(false); } params.setFields("*", "score"); // we need the score for post-ranking return params; }
From source file:nl.knaw.dans.common.solr.converter.SolrQueryRequestConverter.java
License:Apache License
public static SolrQuery convert(SearchRequest request) throws SolrSearchEngineException { SolrQuery queryObj = new SolrQuery(); // set query/*from w w w. jav a 2s .c o m*/ String query = ""; String qstr = request.getQuery().getQueryString(); if (qstr != null) query += qstr; FieldSet<?> fieldQueries = request.getFieldQueries(); if (fieldQueries != null) { for (Field<?> fieldQuery : fieldQueries) { query += fieldQueryToString(fieldQuery) + " "; } } queryObj.setQuery(query); // set filter queries FieldSet<?> filterQueries = request.getFilterQueries(); if (filterQueries != null) { int i = 0; String[] fq = new String[filterQueries.size()]; for (Field<?> field : filterQueries) { fq[i] = fieldQueryToString(field); i++; } queryObj.setFilterQueries(fq); } // set sort fields List<SortField> sortFields = request.getSortFields(); if (sortFields != null) { for (SortField sortField : sortFields) { ORDER order; if (sortField.getValue().equals(SortOrder.DESC)) order = ORDER.desc; else order = ORDER.asc; String sortFieldName = sortField.getName(); if (sortField.getSortType().equals(SortType.BY_RELEVANCE_SCORE)) sortFieldName = "score"; queryObj.addSortField(sortFieldName, order); } } // faceting enabled Set<String> facetFields = request.getFacetFields(); boolean enableFaceting = facetFields != null && facetFields.size() > 0; queryObj.setFacet(enableFaceting); if (enableFaceting) { for (String facetField : facetFields) { queryObj.addFacetField(facetField); } } // hit highlighting queryObj.setHighlight(request.isHighlightingEnabled()); // paging queryObj.setRows(request.getLimit()); queryObj.setStart(request.getOffset()); // misc settings queryObj.setIncludeScore(true); return queryObj; }
From source file:no.sesat.search.mode.command.SolrSimpleFacetToolkitImpl.java
License:Open Source License
private void createFacet(final SearchCommand.Context context, final Navigator facet, final SolrQuery query) { // we want the facet count query.addFacetField(facet.getField()); final StringDataObject facetValue = context.getDataModel().getParameters().getValue(facet.getId()); if (null != facetValue) { // splitting here allows for multiple navigation selections within the one navigation level. final String[] arr = getSearchConfiguration(context).getFacetSeparator().isEmpty() ? new String[] { facetValue.getString() } : facetValue.getString().split(getSearchConfiguration(context).getFacetSeparator()); for (String navSingleValue : arr) { final String value = facet.isBoundaryMatch() ? "^\"" + navSingleValue + "\"$" : "\"" + navSingleValue + "\""; query.addFilterQuery(facet.getField() + ':' + value); }//from ww w . ja va 2s . co m // request children facets of any selected facet if (null != facet.getChildNavigator()) { createFacet(context, facet.getChildNavigator(), query); } } }
From source file:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
/** * Helper method to create SolrQuery object and add facet settings * * @return solrQuery the SolrQuery//from w w w. j a v a 2s. com */ protected SolrQuery initSolrQuery(String[] facets) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); if (facets == null) { //use the default set solrQuery.setFacet(true); solrQuery.addFacetField("idxtype"); solrQuery.addFacetField("australian_s"); solrQuery.addFacetField("speciesGroup"); solrQuery.addFacetField("speciesSubgroup"); //solrQuery.addFacetField("kingdom"); solrQuery.addFacetField("rank"); //solrQuery.addFacetField("rankId"); //solrQuery.addFacetField("pestStatus"); // solrQuery.addFacetField("conservationStatus"); solrQuery.addFacetField("conservationStatusAUS"); solrQuery.addFacetField("conservationStatusACT"); solrQuery.addFacetField("conservationStatusNSW"); solrQuery.addFacetField("conservationStatusNT"); solrQuery.addFacetField("conservationStatusQLD"); solrQuery.addFacetField("conservationStatusSA"); solrQuery.addFacetField("conservationStatusTAS"); solrQuery.addFacetField("conservationStatusVIC"); solrQuery.addFacetField("conservationStatusWA"); solrQuery.addFacetField("category_m_s"); solrQuery.addFacetField("category_NSW_m_s"); solrQuery.addFacetField("category_ACT_m_s"); solrQuery.addFacetField("category_QLD_m_s"); solrQuery.addFacetField("category_SA_m_s"); solrQuery.addFacetField("category_NT_m_s"); solrQuery.addFacetField("category_TAS_m_s"); solrQuery.addFacetField("category_WA_m_s"); solrQuery.addFacetField("category_VIC_m_s"); } else { solrQuery.addFacetField(facets); } solrQuery.setFacetMinCount(1); solrQuery.setRows(10); solrQuery.setStart(0); //add highlights solrQuery.setHighlight(true); solrQuery.setHighlightFragsize(80); solrQuery.setHighlightSnippets(2); solrQuery.setHighlightSimplePre("<strong>"); solrQuery.setHighlightSimplePost("</strong>"); solrQuery.add("hl.usePhraseHighlighter", "true"); solrQuery.addHighlightField("commonName"); solrQuery.addHighlightField("scientificName"); solrQuery.addHighlightField("pestStatus"); solrQuery.addHighlightField("conservationStatus"); solrQuery.addHighlightField("simpleText"); solrQuery.addHighlightField("content"); return solrQuery; }