List of usage examples for org.apache.solr.client.solrj SolrQuery setFacetMinCount
public SolrQuery setFacetMinCount(int cnt)
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 ww . j a va 2s . 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:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
/** * Retrieves a simple count using the supplied query * /* ww w. ja va 2 s . c o m*/ * @param query * @return * @throws SolrServerException */ private int doCountQuery(String query) throws Exception { logger.info("Count query: " + query); //do a query to retrieve a count SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setFacet(false); solrQuery.setFacetMinCount(0); solrQuery.setFacetLimit(10000); solrQuery.setRows(0); solrQuery.setStart(0); solrQuery.setQuery(query); QueryResponse qr = solrUtils.getSolrServer().query(solrQuery); // can throw exception SolrDocumentList sdl = qr.getResults(); return (int) sdl.getNumFound(); }
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 ww .j a v a 2 s.c om*/ */ 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; }
From source file:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
/** * Helper method to create SolrQuery facets for dataset counts * * @return solrQuery the SolrQuery/*ww w . ja va 2s . co m*/ */ protected SolrQuery initCountsQuery(String facetField) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setFacet(true); solrQuery.addFacetField(facetField); solrQuery.setFacetMinCount(0); solrQuery.setFacetLimit(10000); solrQuery.setRows(1); solrQuery.setStart(0); return solrQuery; }
From source file:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
public Collection getRankingFacetByUserIdAndGuid(String userId, String guid) throws Exception { String key = null;/*from w w w . j a va 2 s . c o m*/ String sortField = null; try { String[] fq = new String[] {}; SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setRows(0); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1); // unlimited = -1 if (guid == null || guid.length() < 1 || "*".equals(guid)) { key = "*"; solrQuery.addFacetField("guid"); sortField = "guid"; } else { key = ClientUtils.escapeQueryChars(guid); sortField = "superColumnName"; } solrQuery.addFacetField("superColumnName"); solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND userId:" + userId + " AND guid:" + key); SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, sortField, "asc"); if (qr == null || qr.getFacetResults() == null) { return new ArrayList(); } return qr.getFacetResults(); } catch (SolrServerException ex) { logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex); return new ArrayList(); } }
From source file:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
public Collection getUserIdFacetByGuid(String guid) throws Exception { String key = null;/*from ww w .jav a 2 s . c om*/ try { String[] fq = new String[] {}; SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); solrQuery.setRows(0); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1); // unlimited = -1 if (guid == null || guid.length() < 1 || "*".equals(guid)) { logger.info("Invalid guid: " + guid); return new ArrayList(); } else { key = ClientUtils.escapeQueryChars(guid); } solrQuery.addFacetField("userId"); solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND guid:" + key); SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, "userId", "asc"); if (qr == null || qr.getFacetResults() == null) { return new ArrayList(); } return qr.getFacetResults(); } catch (SolrServerException ex) { logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex); return new ArrayList(); } }
From source file:org.ambraproject.article.service.BrowseServiceImpl.java
License:Apache License
private Years loadArticleDates(String journalKey) { Years dates = new Years(); SolrQuery query = createCommonQuery(journalKey); query.setFacet(true);/*w ww . j a v a 2 s . c om*/ query.addFacetField("publication_date"); query.setFacetLimit(-1); query.setFacetMinCount(1); query.setRows(0); try { QueryResponse response = this.serverFactory.getServer().query(query); FacetField ff = response.getFacetField("publication_date"); List<FacetField.Count> counts = ff.getValues(); for (FacetField.Count count : counts) { String publicationDate = count.getName(); Integer y = getYear(publicationDate); Integer m = getMonth(publicationDate); Integer d = getDay(publicationDate); dates.getMonths(y).getDays(m).add(d); } } catch (SolrServerException e) { log.error("Unable to execute a query on the Solr Server.", e); } return dates; }
From source file:org.ambraproject.article.service.BrowseServiceImpl.java
License:Apache License
/** * Get a list of article counts for each category * * @param journalKey the current journal * * @return category info/*from w ww.j a v a 2 s .c om*/ */ private SortedMap<String, Long> getSubjectsForJournalViaSolr(String journalKey) { SortedMap<String, Long> categories = new TreeMap<String, Long>(); SolrQuery query = createCommonQuery(journalKey); query.setFacet(true); query.addFacetField("subject_level_1"); query.setFacetLimit(-1); query.setFacetMinCount(1); query.setRows(0); try { QueryResponse response = this.serverFactory.getServer().query(query); FacetField ff = response.getFacetField("subject_level_1"); List<FacetField.Count> counts = ff.getValues(); if (counts != null) { for (FacetField.Count count : counts) { categories.put(count.getName(), count.getCount()); } } } catch (SolrServerException e) { log.error("Unable to execute a query on the Solr Server.", e); } return categories; }
From source file:org.ambraproject.article.service.BrowseServiceImpl.java
License:Apache License
/** * Returns a list of articles for a given category * @param params a collection filters / parameters to browse by * @return articles/* w w w. j ava2 s . c o m*/ */ private BrowseResult getArticlesBySubjectViaSolr(BrowseParameters params) { BrowseResult result = new BrowseResult(); ArrayList<SearchHit> articles = new ArrayList<SearchHit>(); long total = 0; SolrQuery query = createCommonQuery(params.getJournalKey()); query.addField("title_display"); query.addField("author_display"); query.addField("article_type"); query.addField("publication_date"); query.addField("id"); query.addField("abstract_primary_display"); query.addField("eissn"); if (params.getSubjects() != null && params.getSubjects().length > 0) { StringBuffer subjectQuery = new StringBuffer(); for (String subject : params.getSubjects()) { subjectQuery.append("\"").append(subject).append("\"").append(" AND "); } // remove the last " AND " query.setQuery("subject_level_1:(" + subjectQuery.substring(0, subjectQuery.length() - 5) + ")"); } // we use subject_level_1 field instead of subject_facet field because // we are only interested in the top level subjects query.setFacet(true); query.addFacetField("subject_level_1"); query.setFacetMinCount(1); query.setFacetSort("index"); setSort(query, params); query.setStart(params.getPageNum() * params.getPageSize()); query.setRows(params.getPageSize()); try { QueryResponse response = this.serverFactory.getServer().query(query); SolrDocumentList documentList = response.getResults(); total = documentList.getNumFound(); for (SolrDocument document : documentList) { SearchHit sh = createArticleBrowseDisplay(document, query.toString()); articles.add(sh); } result.setSubjectFacet(facetCountsToHashMap(response.getFacetField("subject_level_1"))); } catch (SolrServerException e) { log.error("Unable to execute a query on the Solr Server.", e); } result.setTotal(total); result.setArticles(articles); return result; }
From source file:org.ambraproject.search.service.SolrSearchService.java
License:Apache License
private SolrQuery createQuery(String queryString, int startPage, int pageSize, boolean useDismax) { SolrQuery query = new SolrQuery(queryString); query.setTimeAllowed(queryTimeout);//from w ww.j ava2 s. c o m query.setIncludeScore(true); // The relevance (of each results element) to the search terms. query.setHighlight(true); if (useDismax) { query.set("defType", "dismax"); } //TODO: Put The "options" from the "queryField" picklist into a config file. //This list matches the "options" from the "queryField" picklist on unformattedSearch.ftl, //without the "date" fields. query.set("hl.fl", this.highlightFields); query.set("hl.requireFieldMatch", true); query.setStart(startPage * pageSize); // Which results element to return first in this batch. query.setRows(pageSize); // The number of results elements to return. // request only fields that we need to display query.setFields("id", "score", "title_display", "publication_date", "eissn", "journal", "article_type", "author_display"); query.addFacetField("subject_facet"); query.addFacetField("author_facet"); query.addFacetField("editor_facet"); query.addFacetField("article_type_facet"); query.addFacetField("affiliate_facet"); query.set("facet.method", "fc"); query.setFacetLimit(MAX_FACET_SIZE); query.setFacetMinCount(MIN_FACET_COUNT); // Add a filter to ensure that Solr never returns partial documents query.addFilterQuery(createFilterFullDocuments()); return query; }