List of usage examples for org.apache.solr.client.solrj SolrQuery addField
public SolrQuery addField(String field)
From source file:org.intermine.api.searchengine.solr.SolrKeywordSearchHandler.java
License:GNU General Public License
private QueryResponse performSearch(InterMineAPI im, String queryString, Map<String, String> facetValues, List<Integer> ids, int offSet, int rowSize) { SolrClient solrClient = SolrClientManager.getClientInstance(im.getObjectStore()); QueryResponse resp = null;// w ww . j av a 2 s. co m KeywordSearchPropertiesManager keywordSearchPropertiesManager = KeywordSearchPropertiesManager .getInstance(im.getObjectStore()); Vector<KeywordSearchFacetData> facets = keywordSearchPropertiesManager.getFacets(); Map<ClassDescriptor, Float> classBoost = keywordSearchPropertiesManager.getClassBoost(); List<String> fieldNames = getFieldNamesFromSolrSchema(solrClient); try { SolrQuery newQuery = new SolrQuery(); newQuery.setQuery(queryString); newQuery.setStart(offSet); newQuery.setRows(rowSize); newQuery.addField("score"); newQuery.addField("id"); newQuery.add("defType", "edismax"); for (KeywordSearchFacetData keywordSearchFacetData : facets) { newQuery.addFacetField("facet_" + keywordSearchFacetData.getField()); } // add faceting selections for (Map.Entry<String, String> facetValue : facetValues.entrySet()) { if (facetValue != null) { newQuery.addFilterQuery(facetValue.getKey() + ":" + facetValue.getValue()); } } //limiting the query based on search bag if (ids != null && !ids.isEmpty()) { for (int id : ids) { newQuery.addFilterQuery("id", Integer.toString(id)); } } String boostQuery = ""; for (Map.Entry<ClassDescriptor, Float> boostValue : classBoost.entrySet()) { if (boostValue != null) { boostQuery += "classname:" + boostValue.getKey().getUnqualifiedName() + "^" + boostValue.getValue() + " "; } } LOG.info("BoostQuery : " + boostQuery); String fieldListQuery = ""; for (String field : fieldNames) { fieldListQuery = fieldListQuery + field; if (field.endsWith("_raw")) { fieldListQuery = fieldListQuery + "^2.0"; } fieldListQuery = fieldListQuery + " "; } LOG.info("Field List Query : " + fieldListQuery); newQuery.add("bq", boostQuery); newQuery.add("qf", fieldListQuery); resp = solrClient.query(newQuery, SolrRequest.METHOD.POST); return resp; } catch (SolrServerException e) { LOG.error("Query performed on solr failed for search term : " + queryString, e); e.printStackTrace(); } catch (IOException e) { LOG.error("Query performed on solr failed for search term : " + queryString, e); e.printStackTrace(); } return resp; }
From source file:org.mousephenotype.cda.solr.repositories.image.ImagesSolrJ.java
License:Apache License
/** * @since 2016/02/25//from w w w. ja v a 2 s.c o m * @author ilinca * @return * @throws SolrServerException, IOException */ public SolrDocumentList getImagesForLacZ() throws SolrServerException, IOException { SolrQuery query = new SolrQuery(); query.setQuery("procedure_name:*LacZ*"); query.addFilterQuery("ma_id:*"); query.addFilterQuery("accession:*"); query.addField("ma_id"); query.addField("accession"); query.setRows(Integer.MAX_VALUE); return sangerImagesCore.query(query).getResults(); }
From source file:org.mousephenotype.cda.solr.service.AnatomyService.java
License:Apache License
public String getSearchTermJson(String anatomyTermId) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery().setQuery(AnatomyDTO.ANATOMY_ID + ":\"" + anatomyTermId + "\"") .setRows(1);/*ww w . j a va 2s.c o m*/ solrQuery.addField(AnatomyDTO.SEARCH_TERM_JSON); QueryResponse rsp = anatomyCore.query(solrQuery); List<AnatomyDTO> mas = rsp.getBeans(AnatomyDTO.class); return (mas != null) ? mas.get(0).getSearchTermJson() : ""; }
From source file:org.mousephenotype.cda.solr.service.AnatomyService.java
License:Apache License
public String getChildrenJson(String nodeId, String termId) throws SolrServerException, IOException { // Node_id is unique in ontodb for each ontology. // But we are mixing ontologies here so need to use a combination of node_id and anotomy_id prefix for uniqueness String qStr = null;//from ww w .j a va 2 s. co m if (termId.startsWith("MA:")) { qStr = "MA*"; } else if (termId.startsWith("EMAPA:")) { qStr = "EMAPA*"; } SolrQuery solrQuery = new SolrQuery() .setQuery(AnatomyDTO.ANATOMY_NODE_ID + ":" + nodeId + " AND " + AnatomyDTO.ANATOMY_ID + ":" + qStr) .setRows(1); solrQuery.addField(AnatomyDTO.CHILDREN_JSON); QueryResponse rsp = anatomyCore.query(solrQuery); List<AnatomyDTO> mas = rsp.getBeans(AnatomyDTO.class); return (mas != null) ? mas.get(0).getChildrenJson() : ""; }
From source file:org.mousephenotype.cda.solr.service.ImageService.java
License:Apache License
/** * * @return list of image DTOs with laczData. Selected fields only. * @throws SolrServerException, IOException *///from www. j a va 2 s. c o m public List<ImageDTO> getImagesForLacZ() throws SolrServerException, IOException { SolrQuery query = new SolrQuery(); query.setQuery(ImageDTO.PROCEDURE_NAME + ":*LacZ*"); query.setFilterQueries(ImageDTO.ANATOMY_ID + ":*"); query.addFilterQuery(ImageDTO.GENE_ACCESSION_ID + ":*"); query.setRows(1000000); query.addField(ImageDTO.GENE_SYMBOL); query.addField(ImageDTO.GENE_ACCESSION_ID); query.addField(ImageDTO.ANATOMY_ID); query.addField(ImageDTO.ANATOMY_TERM); return impcImagesCore.query(query).getBeans(ImageDTO.class); }
From source file:org.mousephenotype.cda.solr.service.ImageService.java
License:Apache License
public List<String[]> getLaczExpressionSpreadsheet(String imageCollectionLinkBase) { SolrQuery query = new SolrQuery(); ArrayList<String[]> res = new ArrayList<>(); String[] aux = new String[0]; query.setQuery(ImageDTO.PROCEDURE_NAME + ":\"Adult LacZ\" AND " + ImageDTO.BIOLOGICAL_SAMPLE_GROUP + ":experimental"); query.setRows(1000000);/*from w ww . ja v a 2 s. c o m*/ query.addField(ImageDTO.GENE_SYMBOL); query.addField(ImageDTO.GENE_ACCESSION_ID); query.addField(ImageDTO.ALLELE_SYMBOL); query.addField(ImageDTO.COLONY_ID); query.addField(ImageDTO.BIOLOGICAL_SAMPLE_ID); query.addField(ImageDTO.ZYGOSITY); query.addField(ImageDTO.SEX); query.addField(ImageDTO.PARAMETER_ASSOCIATION_NAME); query.addField(ImageDTO.PARAMETER_STABLE_ID); query.addField(ImageDTO.PARAMETER_ASSOCIATION_VALUE); query.addField(ImageDTO.GENE_ACCESSION_ID); query.addField(ImageDTO.PHENOTYPING_CENTER); query.setFacet(true); query.setFacetLimit(100); query.addFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME); query.set("group", true); query.set("group.limit", 100000); query.set("group.field", ImageDTO.BIOLOGICAL_SAMPLE_ID); try { QueryResponse solrResult = impcImagesCore.query(query); ArrayList<String> allParameters = new ArrayList<>(); List<String> header = new ArrayList<>(); header.add("Gene Symbol"); header.add("MGI Gene Id"); header.add("Allele Symbol"); header.add("Colony Id"); header.add("Biological Sample Id"); header.add("Zygosity"); header.add("Sex"); header.add("Phenotyping Centre"); logger.info(SolrUtils.getBaseURL(impcImagesCore) + "/select?" + query); // Get facets as we need to turn them into columns for (Count facet : solrResult.getFacetField(ImageDTO.PARAMETER_ASSOCIATION_NAME).getValues()) { allParameters.add(facet.getName()); header.add(facet.getName()); } header.add("image_collection_link"); res.add(header.toArray(aux)); for (Group group : solrResult.getGroupResponse().getValues().get(0).getValues()) { List<String> row = new ArrayList<>(); ArrayList<String> params = new ArrayList<>(); ArrayList<String> paramValues = new ArrayList<>(); String urlToImagePicker = imageCollectionLinkBase + "/imageComparator?acc="; for (SolrDocument doc : group.getResult()) { if (row.size() == 0) { row.add(doc.getFieldValues(ImageDTO.GENE_SYMBOL).iterator().next().toString()); row.add(doc.getFieldValues(ImageDTO.GENE_ACCESSION_ID).iterator().next().toString()); urlToImagePicker += doc.getFieldValue(ImageDTO.GENE_ACCESSION_ID) + "¶meter_stable_id="; urlToImagePicker += doc.getFieldValue(ImageDTO.PARAMETER_STABLE_ID); if (doc.getFieldValue(ImageDTO.ALLELE_SYMBOL) != null) { row.add(doc.getFieldValue(ImageDTO.ALLELE_SYMBOL).toString()); } row.add(doc.getFieldValue(ImageDTO.COLONY_ID).toString()); row.add(doc.getFieldValue(ImageDTO.BIOLOGICAL_SAMPLE_ID).toString()); if (doc.getFieldValue(ImageDTO.ZYGOSITY) != null) { row.add(doc.getFieldValue(ImageDTO.ZYGOSITY).toString()); } row.add(doc.getFieldValue(ImageDTO.SEX).toString()); row.add(doc.getFieldValue(ImageDTO.PHENOTYPING_CENTER).toString()); } if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME) != null) { for (int i = 0; i < doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME).size(); i++) { params.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_NAME) .toArray(new Object[0])[i].toString()); if (doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE) != null) { paramValues.add(doc.getFieldValues(ImageDTO.PARAMETER_ASSOCIATION_VALUE) .toArray(new Object[0])[i].toString()); } else { paramValues.add(Constants.NO_INFORMATION_AVAILABLE); } } } } for (String tissue : allParameters) { if (params.contains(tissue)) { row.add(paramValues.get(params.indexOf(tissue))); } else { row.add(""); } } row.add(urlToImagePicker); res.add(row.toArray(aux)); } } catch (SolrServerException | IOException e) { e.printStackTrace(); } return res; }
From source file:org.mousephenotype.cda.solr.service.MpService.java
License:Apache License
public List<MpDTO> getAllMpWithMaMapping() throws SolrServerException, IOException { SolrQuery q = new SolrQuery(); q.setRows(Integer.MAX_VALUE); q.setQuery(MpDTO.INFERRED_MA_ID + ":*"); q.addField(MpDTO.MP_ID); q.addField(MpDTO.INFERRED_MA_ID);/*w ww .j av a2 s . co m*/ return mpCore.query(q).getBeans(MpDTO.class); }
From source file:org.mousephenotype.cda.solr.service.MpService.java
License:Apache License
/** * @author ilinca//from w w w .j a v a2 s. c o m * @since 2016/04/05 * @param mpTermId * @return JSON in jstree format for ontology browser * @throws SolrServerException, IOException */ public String getSearchTermJson(String mpTermId) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery().setQuery(MpDTO.MP_ID + ":\"" + mpTermId + "\"").setRows(1); solrQuery.addField(MpDTO.SEARCH_TERM_JSON); QueryResponse rsp = mpCore.query(solrQuery); List<MpDTO> mps = rsp.getBeans(MpDTO.class); return (mps != null) ? mps.get(0).getSearchTermJson() : ""; }
From source file:org.mousephenotype.cda.solr.service.MpService.java
License:Apache License
/** * @author ilinca/*from w w w. ja v a 2s . co m*/ * @since 2016/04/05 * @return JSON in jstree format for ontology browser * @throws SolrServerException, IOException */ public String getChildrenJson(String nodeId, String termId) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery().setQuery(MpDTO.MP_NODE_ID + ":" + nodeId).setRows(1); solrQuery.addField(MpDTO.CHILDREN_JSON); QueryResponse rsp = mpCore.query(solrQuery); List<MpDTO> mps = rsp.getBeans(MpDTO.class); return (mps != null) ? mps.get(0).getChildrenJson() : ""; }
From source file:org.mousephenotype.cda.solr.service.ObservationService.java
License:Apache License
public Set<String> getViabilityForGene(String acc) throws SolrServerException, IOException { SolrQuery query = new SolrQuery(); query.setQuery(ObservationDTO.PARAMETER_STABLE_ID + ":IMPC_VIA_001_001"); query.setFilterQueries(ObservationDTO.GENE_ACCESSION_ID + ":\"" + acc + "\""); query.addField(ObservationDTO.GENE_SYMBOL); query.addField(ObservationDTO.GENE_ACCESSION_ID); query.addField(ObservationDTO.CATEGORY); query.setSort(ObservationDTO.ID, SolrQuery.ORDER.asc); query.setRows(100000);/*ww w. j a v a2s. c om*/ logger.info("getViabilityForGene Url" + SolrUtils.getBaseURL(experimentCore) + "/select?" + query); HashSet<String> viabilityCategories = new HashSet<>(); for (SolrDocument doc : experimentCore.query(query).getResults()) { viabilityCategories.add(doc.getFieldValue(ObservationDTO.CATEGORY).toString()); } return viabilityCategories; }