List of usage examples for org.apache.solr.client.solrj SolrQuery addFacetField
public SolrQuery addFacetField(String... fields)
From source file:ru.org.linux.search.SearchViewer.java
License:Apache License
public QueryResponse performSearch(SolrServer search) throws SolrServerException { SolrQuery params = new SolrQuery(); // set search query params params.set("q", query.getQ()); params.set("rows", SEARCH_ROWS); params.set("start", query.getOffset()); params.set("qt", "edismax"); if (query.getRange().getParam() != null) { params.add("fq", query.getRange().getParam()); }//ww w . ja v a 2 s . c om if (query.getInterval().getRange() != null) { params.add("fq", query.getInterval().getRange()); } params.setFacetMinCount(1); params.setFacet(true); String section = query.getSection(); if (section != null && !section.isEmpty() && !"0".equals(section)) { params.add("fq", "{!tag=dt}section:" + query.getSection()); params.addFacetField("{!ex=dt}section"); params.addFacetField("{!ex=dt}group_id"); } else { params.addFacetField("section"); params.addFacetField("group_id"); } if (query.getUser() != null) { User user = query.getUser(); if (query.isUsertopic()) { params.add("fq", "topic_user_id:" + user.getId()); } else { params.add("fq", "user_id:" + user.getId()); } } if (query.getGroup() != 0) { params.add("fq", "{!tag=dt}group_id:" + query.getGroup()); } params.set("sort", query.getSort().getParam()); return search.query(params); }
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);/*from w w w . jav a2 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); query.setRows(0);/* ww w.j a va 2 s . co m*/ 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);// w w w. ja v a 2s. co 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 ww w . j av a2s. c om*/ // 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.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);//from w w w.j av a 2s . c om 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.GeneService.java
License:Apache License
/** * /*from w w w . ja v a 2 s .com*/ * @param geneIds * @return Number of genes (from the provided list) in each status of interest. */ public HashMap<String, Long> getStatusCount(Set<String> geneIds) { HashMap<String, Long> res = new HashMap<>(); // build query for these genes String geneQuery = GeneDTO.MGI_ACCESSION_ID + ":(" + StringUtils.join(geneIds, " OR ").replace(":", "\\:") + ")"; System.out.println("geneQuery: " + geneQuery); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(geneQuery).setRows(1).setFacet(true); QueryResponse solrResponse; try { // add facet for latest_project_status solrQuery.addFacetField(GeneDTO.LATEST_ES_CELL_STATUS); System.out.println("---- " + solr.getBaseURL() + "/select?" + solrQuery); solrResponse = solr.query(solrQuery); // put all values in the hash for (Count c : solrResponse.getFacetField(GeneDTO.LATEST_ES_CELL_STATUS).getValues()) { res.put(c.getName(), c.getCount()); } // add facet latest_es_cell_status solrQuery.removeFacetField(GeneDTO.LATEST_ES_CELL_STATUS); solrResponse = solr.query(solrQuery.addFacetField(GeneDTO.LATEST_PROJECT_STATUS)); // put all values in the hash for (Count c : solrResponse.getFacetField(GeneDTO.LATEST_PROJECT_STATUS).getValues()) { res.put(c.getName(), c.getCount()); } } catch (SolrServerException e) { e.printStackTrace(); } return res; }
From source file:uk.ac.ebi.phenotype.service.MpService.java
License:Apache License
public Set<BasicBean> getAllTopLevelPhenotypesAsBasicBeans() throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.addFacetField("top_level_mp_term_id"); solrQuery.setRows(0);/* ww w .j a v a2 s. c o m*/ QueryResponse rsp = solr.query(solrQuery); System.out.println("solr query in basicbean=" + solrQuery); SolrDocumentList res = rsp.getResults(); HashSet<BasicBean> allTopLevelPhenotypes = new LinkedHashSet<BasicBean>(); for (FacetField ff : rsp.getFacetFields()) { for (Count count : ff.getValues()) { String mpArray[] = count.getName().split("___"); BasicBean bean = new BasicBean(); bean.setName(mpArray[0]); bean.setId(mpArray[1]); allTopLevelPhenotypes.add(bean); } } return allTopLevelPhenotypes; }
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);/*from w ww . j ava 2 s . c o m*/ q.setFacetMinCount(1); 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; }
From source file:uk.ac.ebi.phenotype.service.ObservationService.java
License:Apache License
public Set<String> getAllColonyIdsByResource(List<String> resourceName, boolean experimentalOnly) { SolrQuery q = new SolrQuery(); q.setFacet(true);// w w w .jav a 2s .co m q.setFacetMinCount(1); q.setFacetLimit(-1); q.setRows(0); q.addFacetField(ObservationDTO.COLONY_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 getAllColonyIdsByResource " + solr.getBaseURL() + "/select?" + q); try { return getFacets(solr.query(q)).get(ObservationDTO.COLONY_ID).keySet(); } catch (SolrServerException e) { e.printStackTrace(); } return null; }