List of usage examples for org.apache.solr.client.solrj SolrQuery setFacet
public SolrQuery setFacet(boolean b)
From source file:sk.opendatanode.utils.SolrQueryHelper.java
License:Open Source License
/** * Adds to {@code solrQuery} all of needed facet queries and their tags * @param solrQuery// w w w .j a va 2 s . co m * @param parameters */ public static void addFacetParameters(SolrQuery solrQuery, PageParameters parameters) { solrQuery.setFacet(true); // allowing facets // List<String> excludeTagsForDefault = new ArrayList<String>(); boolean all = hasTypeAll(parameters); // pridanie fitlrov pre konkretny type // TODO refactoring if (all || hasType(SolrType.ORGANIZATION, parameters)) { addFacetItemQuery(FacetItemType.LEGAL_FORM, solrQuery); addFacetItemQuery(FacetItemType.SEAT, solrQuery); addFacetItemQuery(FacetItemType.DATE_FROM, solrQuery); addFacetItemQuery(FacetItemType.DATE_TO, solrQuery); // excludeTagsForDefault.addAll(Arrays.asList(new String[] {"legal_form", // "seat", // "date_from", // "date_to"})); } if (all || hasType(SolrType.PROCUREMENT, parameters)) { addFacetItemQuery(FacetItemType.YEAR, solrQuery); addFacetItemQuery(FacetItemType.PRICE, solrQuery); addFacetItemQuery(FacetItemType.CURRENCY, solrQuery); addFacetItemQuery(FacetItemType.VAT, solrQuery); // excludeTagsForDefault.addAll(Arrays.asList(new String[] {"year", // "price", // "currency", // "vat_included"})); } if (all || hasType(SolrType.POLITICAL_PARTY_DONATION, parameters)) { addFacetItemQuery(FacetItemType.PARTY, solrQuery); addFacetItemQuery(FacetItemType.VALUE, solrQuery); addFacetItemQuery(FacetItemType.YEAR, solrQuery); // excludeTagsForDefault.addAll(Arrays.asList(new String[] {"recipient_party", // "donation_value", // "year"})); } // pridame defaultne facet filtre (type) // List<FacetItem> list = FacetFactory.getDefaultFacetItemList(); // for (FacetItem facetItem : list) { // String exTag = getExcludeTagForDefault(excludeTagsForDefault); // solrQuery.addFacetQuery(exTag+facetItem.getQuery()); // } }
From source file:uk.ac.ebi.atlas.solr.query.builders.FacetedPropertyValueQueryBuilder.java
License:Apache License
private SolrQuery buildQueryObject(String queryString) { SolrQuery solrQuery = new SolrQuery(queryString); solrQuery.addFacetField(PROPERTY_LOWER_FIELD); solrQuery.setRows(0);/* w w w . ja v a 2 s. c o m*/ solrQuery.setFacet(true); solrQuery.setFacetLimit(DEFAULT_LIMIT); solrQuery.setFacetMinCount(1); return solrQuery; }
From source file:uk.ac.ebi.atlas.solr.query.SpeciesLookupService.java
License:Apache License
public Result fetchSpeciesForGeneSet(String term) { // eg: property_value_lower:"IPR027417" String queryText = PROPERTY_LOWER_FIELD + ":" + encloseInQuotes(term) + " AND property_name:(pathwayid OR go OR po OR interpro OR REACT_303889)"; // Needed to exclude Entrez numerical ids, identical to Plant Reactome ids (pathwayid) LOGGER.debug("fetch species for geneset " + queryText); SolrQuery query = new SolrQuery(queryText); query.addFacetField(SPECIES_FIELD);//from w ww. ja v a 2 s .c o m query.setRows(0); query.setFacet(true); // just get first 2 species for performance reasons, we only need to know if multi-species exist, not what they are query.setFacetLimit(2); query.setFacetMinCount(1); QueryResponse solrResponse = solrServer.query(query); ImmutableSet<String> species = SolrUtil.extractFirstFacetValues(solrResponse); return new Result(species); }
From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.IntactSolrSearcher.java
License:Apache License
public Multimap<String, InteractorIdCount> searchInteractors(SolrQuery originalQuery, IntactFacetField[] intactFacetFields) throws IntactSolrException { SolrQuery query = originalQuery.getCopy(); query.setRows(0);//from ww w . j av a2 s . c o m // we allow faceting query.setFacet(true); // we want all the facet fields with min count = 1. The facet fields with count = 0 are not interesting query.setFacetMinCount(1); Multimap<String, InteractorIdCount> interactors = HashMultimap.create(); if (intactFacetFields != null) { // we sort the results : the biggest count first query.setFacetSort(FacetParams.FACET_SORT_COUNT); for (IntactFacetField facetField : intactFacetFields) { final String fieldName = createFieldName(facetField.getFieldName()); // important optimization. We don't want to return all the fields, only a certain number for pagination if (facetField.getFirst() != null) { query.set("f." + fieldName + ".facet.offset", facetField.getFirst()); } if (facetField.getMax() != null) { query.set("f." + fieldName + ".facet.limit", facetField.getMax()); } query.addFacetField(fieldName); } } QueryResponse queryResponse = executeQuery(query); List<FacetField> facetFields = queryResponse.getFacetFields(); if (facetFields == null || facetFields.isEmpty()) { return interactors; } for (FacetField ff : facetFields) { if (ff != null && ff.getValues() != null) { for (FacetField.Count c : ff.getValues()) { interactors.put(extractInteractorTypeFromFieldName(ff.getName()), new InteractorIdCount(c.getName(), c.getCount())); } } } return interactors; }
From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.IntactSolrSearcher.java
License:Apache License
public Map<String, Integer> countAllInteractors(SolrQuery originalQuery, String[] interactorTypeMis) throws IntactSolrException { boolean endOfFacetResults = false; int firstResults = 0; Map<String, Integer> results = new HashMap<String, Integer>(); while (!endOfFacetResults) { int chunkResults = 0; SolrQuery query = originalQuery.getCopy(); query.setRows(0);//from www.ja v a 2 s. c o m // we allow faceting query.setFacet(true); // we want all the facet fields with min count = 1. The facet fields with count = 0 are not interesting query.setFacetMinCount(1); // important optimization. We don't want to return all the fields, only a certain number for pagination query.set(FacetParams.FACET_OFFSET, firstResults); query.setFacetLimit(CHUNK_FACET_THRESHOLD); // we sort the results : the biggest count first query.setFacetSort(FacetParams.FACET_SORT_COUNT); for (String mi : interactorTypeMis) { final String fieldName = createFieldName(mi); query.addFacetField(fieldName); } QueryResponse queryResponse = executeQuery(query); List<FacetField> facetFields = queryResponse.getFacetFields(); if (facetFields == null || facetFields.isEmpty()) { endOfFacetResults = true; } else { for (FacetField facetField : facetFields) { if (facetField.getValueCount() > 0) { chunkResults += facetField.getValueCount(); if (results.containsKey(facetField.getName())) { int current = results.get(facetField.getName()); results.put(facetField.getName(), current + facetField.getValueCount()); } else { results.put(facetField.getName(), facetField.getValueCount()); } } else if (!results.containsKey(facetField.getName())) { results.put(facetField.getName(), 0); } } if (chunkResults < CHUNK_FACET_THRESHOLD) { endOfFacetResults = true; } } firstResults += CHUNK_FACET_THRESHOLD; } return results; }
From source file:uk.ac.ebi.intact.dataexchange.psimi.solr.ontology.OntologySearcher.java
License:Apache License
public Set<String> getOntologyNames() throws SolrServerException { if (ontologyNames == null) { SolrQuery query = new SolrQuery("*:*"); query.setStart(0);/*from www. j a v a 2 s. c o m*/ query.setRows(0); // prepare faceting query.setFacet(true); query.setParam(FacetParams.FACET_FIELD, "ontology"); query.setFacetLimit(10); query.setFacetMinCount(1); query.set(FacetParams.FACET_OFFSET, 0); // order by unique id query.addSortField(OntologyFieldNames.ID, SolrQuery.ORDER.asc); QueryResponse response = search(query, null); FacetField facetField = response.getFacetField("ontology"); if (facetField.getValues() == null) { return Collections.EMPTY_SET; } ontologyNames = new HashSet<String>(facetField.getValues().size()); for (FacetField.Count c : facetField.getValues()) { ontologyNames.add(c.getName()); } } return ontologyNames; }
From source file:uk.ac.ebi.phenotype.imaging.springrest.images.dao.ImagesSolrJ.java
License:Apache License
private QueryResponse runFacetQuery(String query, String facetField, int start, int length, String filterQuery) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); // System.out.println("facet solr query=" + query); solrQuery.setQuery(query);/*www .j av a 2 s . c o m*/ solrQuery.setStart(start); solrQuery.setRows(length); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(facetField); if (filterQuery != "") { solrQuery.addFilterQuery(filterQuery); } // System.out.println("exp facet query="+solrQuery.toString()); return server.query(solrQuery); }
From source file:uk.ac.ebi.phenotype.service.ObservationService.java
License:Apache License
public List<String> getGenesWithMoreProcedures(int n, ArrayList<String> resourceName) throws SolrServerException, InterruptedException, ExecutionException { List<String> genes = new ArrayList<>(); SolrQuery q = new SolrQuery(); if (resourceName != null) { q.setQuery(ObservationDTO.DATASOURCE_NAME + ":" + StringUtils.join(resourceName, " OR " + ObservationDTO.DATASOURCE_NAME + ":")); } else {/*from w ww .ja v a 2s .c om*/ q.setQuery("*:*"); } String geneProcedurePivot = ObservationDTO.GENE_SYMBOL + "," + ObservationDTO.PROCEDURE_NAME; q.add("facet.pivot", geneProcedurePivot); q.setFacet(true); q.setRows(1); q.setFacetMinCount(1); q.set("facet.limit", -1); System.out.println( "Solr url for getOverviewGenesWithMoreProceduresThan " + solr.getBaseURL() + "/select?" + q); QueryResponse response = solr.query(q); for (PivotField pivot : response.getFacetPivot().get(geneProcedurePivot)) { if (pivot.getPivot().size() >= n) { genes.add(pivot.getValue().toString()); } } return genes; }
From source file:uk.ac.ebi.phenotype.service.ObservationService.java
License:Apache License
public Map<String, Set<String>> getColoniesByPhenotypingCenter(ArrayList<String> resourceName, ZygosityType zygosity) throws SolrServerException, InterruptedException { Map<String, Set<String>> res = new HashMap<>(); SolrQuery q = new SolrQuery(); String pivotFacet = ObservationDTO.PHENOTYPING_CENTER + "," + ObservationDTO.COLONY_ID; NamedList<List<PivotField>> response; if (resourceName != null) { q.setQuery(ObservationDTO.DATASOURCE_NAME + ":" + StringUtils.join(resourceName, " OR " + ObservationDTO.DATASOURCE_NAME + ":")); } else {/*from w ww . jav a 2 s .c o m*/ q.setQuery("*:*"); } if (zygosity != null) { q.addFilterQuery(ObservationDTO.ZYGOSITY + ":" + zygosity.name()); } q.addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":experimental"); q.addFacetPivotField(pivotFacet); q.setFacet(true); q.setFacetLimit(-1); q.setFacetMinCount(1); q.setRows(0); try { response = solr.query(q).getFacetPivot(); for (PivotField genePivot : response.get(pivotFacet)) { String center = genePivot.getValue().toString(); HashSet<String> colonies = new HashSet<>(); for (PivotField f : genePivot.getPivot()) { colonies.add(f.getValue().toString()); } res.put(center, colonies); } } catch (SolrServerException e) { e.printStackTrace(); } return res; }
From source file:uk.ac.ebi.phenotype.service.ObservationService.java
License:Apache License
public Set<String> getAllGeneIdsByResource(List<String> resourceName, boolean experimentalOnly) { SolrQuery q = new SolrQuery(); q.setFacet(true); q.setFacetMinCount(1);/*w ww. j a v a 2 s. c o m*/ q.setFacetLimit(-1); q.setRows(0); q.addFacetField(ObservationDTO.GENE_ACCESSION_ID); if (resourceName != null) { q.setQuery(ObservationDTO.DATASOURCE_NAME + ":" + StringUtils.join(resourceName, " OR " + ObservationDTO.DATASOURCE_NAME + ":")); } else { q.setQuery("*:*"); } if (experimentalOnly) { q.addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":experimental"); } LOG.info("Solr URL getAllGeneIdsByResource " + solr.getBaseURL() + "/select?" + q); try { return getFacets(solr.query(q)).get(ObservationDTO.GENE_ACCESSION_ID).keySet(); } catch (SolrServerException e) { e.printStackTrace(); } return null; }