List of usage examples for org.apache.solr.client.solrj SolrQuery add
public ModifiableSolrParams add(String name, String... val)
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#searchPivot(au.org.ala.biocache.dto.SpatialSearchRequestParams) *//*from w ww.j a v a2 s. co m*/ public List<FacetPivotResultDTO> searchPivot(SpatialSearchRequestParams searchParams) throws Exception { String pivot = StringUtils.join(searchParams.getFacets(), ","); searchParams.setFacets(new String[] {}); queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); searchParams.setFacet(true); //get facet group counts SolrQuery query = initSolrQuery(searchParams, false, null); query.setQuery(queryString); query.setFields(null); //now use the supplied facets to add groups to the query query.add("facet.pivot", pivot); query.add("facet.pivot.mincount", "1"); query.add("facet.missing", "true"); query.setRows(0); searchParams.setPageSize(0); QueryResponse response = runSolrQuery(query, searchParams); NamedList<List<PivotField>> result = response.getFacetPivot(); List<FacetPivotResultDTO> output = new ArrayList(); for (Entry<String, List<PivotField>> pfl : result) { List<PivotField> list = pfl.getValue(); if (list != null && list.size() > 0) { output.add(new FacetPivotResultDTO(list.get(0).getField(), getFacetPivotResults(list), null, (int) response.getResults().getNumFound())); } //should only be one result break; } return output; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#searchStat *//*from w ww. j a va 2s . co m*/ public List<FieldStatsItem> searchStat(SpatialSearchRequestParams searchParams, String field, String facet) throws Exception { searchParams.setFacets(new String[] {}); queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); if (facet != null) searchParams.setFacet(true); //get facet group counts SolrQuery query = initSolrQuery(searchParams, false, null); query.setQuery(queryString); query.setFields(null); //query.setFacetLimit(-1); //stats parameters query.add("stats", "true"); if (facet != null) query.add("stats.facet", facet); query.add("stats.field", field); query.setRows(0); searchParams.setPageSize(0); QueryResponse response = runSolrQuery(query, searchParams); List<FieldStatsItem> output = new ArrayList(); if (facet != null && response.getFieldStatsInfo().size() > 0) { for (FieldStatsInfo f : response.getFieldStatsInfo().values().iterator().next().getFacets().values() .iterator().next()) { FieldStatsItem item = new FieldStatsItem(f); if (f.getName() == null) { item.setFq("-" + facet + ":*"); } else { item.setFq(facet + ":\"" + f.getName() + "\""); } item.setLabel(f.getName()); output.add(item); } } else { if (response.getFieldStatsInfo().size() > 0) { output.add(new FieldStatsItem(response.getFieldStatsInfo().values().iterator().next())); } } return output; }
From source file:com.bindez.nlp.extract.ngram.corpus.MyanmarCorpusTask.java
@Override public TermResult call() throws Exception { TermResult result = new TermResult(); HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer(); SolrQuery query = new SolrQuery(); query.set("q", "word:" + term); query.add("fl", "fl:totaltermfreq(word," + term + ")"); QueryResponse response = server.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument result1 : results) { String count = result1.getFieldValue("fl").toString(); result.setTerm(term);//from w w w . j a v a 2 s . c om result.setFrequency(Long.parseLong(count)); } return result; }
From source file:com.bindez.nlp.extract.ngram.term_frequency.TermFrequency.java
public List<Word> query(Set<String> words) throws SolrServerException { List<Word> result = new ArrayList<Word>(); server = new SolrServer().getSolrServer(); for (String word : words) { SolrQuery query = new SolrQuery(); query.set("q", "content:" + word); query.add("fl", "fl:totaltermfreq(content," + word + ")"); query.set("rows", 1); QueryResponse response = server.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument result1 : results) { String count = result1.getFieldValue("fl").toString(); Word w = new Word(word, Integer.parseInt(count)); result.add(w);//w w w . jav a2s.com } } return result; }
From source file:com.bindez.nlp.extract.ngram.term_frequency.TermFrequencyTask.java
@Override public TermResult call() throws Exception { TermResult result = new TermResult(); HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer(); /*/*from w w w . ja v a 2 s. co m*/ SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); query.set("terms.fl", "content"); query.set("terms.regex", term) ; query.set("terms", "true"); query.set("shards.qt","/terms"); query.set("distrib", "true"); QueryResponse response = server.query(query); TermsResponse termsRes = response.getTermsResponse(); List<TermsResponse.Term> terms= termsRes.getTerms("content"); TermsResponse.Term solrTerm = null ; if(terms != null && terms.size() > 0){ solrTerm = terms.get(0); result.setTerm(term); result.setFrequency(solrTerm.getFrequency()); }else{ result.setTerm(term); result.setFrequency(0); } */ SolrQuery query = new SolrQuery(); query.set("q", "content:" + term); query.add("fl", "fl:totaltermfreq(content," + term + ")"); QueryResponse response = server.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument result1 : results) { String count = result1.getFieldValue("fl").toString(); result.setTerm(term); result.setFrequency(Long.parseLong(count)); } return result; }
From source file:com.bindez.nlp.extract.segmentor.WordSegmentorNgramTask.java
@Override public TermResult call() throws Exception { TermResult result = new TermResult(); HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer(); SolrQuery query = new SolrQuery(); query.set("q", "content:" + term); query.add("fl", "fl:totaltermfreq(content," + term + ")"); QueryResponse response = server.query(query); SolrDocumentList results = response.getResults(); for (SolrDocument result1 : results) { String count = result1.getFieldValue("fl").toString(); result.setTerm(term);/*from ww w. jav a 2 s .c o m*/ result.setFrequency(Long.parseLong(count)); } return result; }
From source file:com.comm.sr.common.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(SolrCommonQuery query_) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("collection", query_.getCollectionName()); SubQuery query = query_.getSubQuery(); if (query == null) { return solrQuery; }//w w w .jav a 2s.c o m StringBuffer solrQueryBuffer = new StringBuffer(); makeFinalSolrQuery(query, solrQueryBuffer); int pageNum = query_.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1; } else { pageNum = query_.getPageNum(); } List<SortItem> sortItems = query_.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (String functionQueryString : query_.getFunctionQuerysList()) { solrQueryBuffer.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } if (solrQueryBuffer.toString().contains("AND")) { int and = solrQueryBuffer.lastIndexOf("AND"); solrQueryBuffer.replace(and, and + 3, ""); } if (solrQueryBuffer.toString().trim().length() == 0) { solrQueryBuffer.append("*:*"); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } for (String fl : query_.getFls()) { solrQuery.addField(fl); } int pageSize = query_.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query_.getLocationPoint(); Double distance = query_.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } LOGGER.info(solrQueryBuffer.toString()); solrQuery.setQuery(solrQueryBuffer.toString()); return solrQuery; }
From source file:com.comm.sr.service.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(CommonQuery query) { SolrQuery solrQuery = new SolrQuery(); StringBuilder queryStr = new StringBuilder(); StringBuilder filterQueryStr = new StringBuilder(); int pageNum = query.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1;/* ww w . j a v a 2 s .c o m*/ } else { pageNum = query.getPageNum(); } List<QueryItem> queryItems = query.getQueryItems(); if (queryItems == null) { queryItems = Lists.newArrayList(); } List<SortItem> sortItems = query.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (QueryItem queryItem : queryItems) { if (queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { filterQueryStr.append(temp + " AND "); } } if (!queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { queryStr.append(temp + " AND "); } } } for (String functionQueryString : query.getFunctionQuerysList()) { queryStr.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } // check if final queryStr is empty if (queryStr.toString().trim().length() == 0) { queryStr.append("*:*"); } // delete last AND if (queryStr.toString().contains("AND")) { int and = queryStr.lastIndexOf("AND"); queryStr.replace(and, and + 3, ""); } if (filterQueryStr.toString().contains("AND")) { int and = filterQueryStr.lastIndexOf("AND"); filterQueryStr.replace(and, and + 3, ""); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } solrQuery.setQuery(queryStr.toString()); if (filterQueryStr.toString().length() != 0) { solrQuery.setFilterQueries(filterQueryStr.toString()); } LOGGER.debug("final queryStr is:" + queryStr.toString() + ""); LOGGER.debug("filter queryStr is:" + filterQueryStr.toString() + ""); // //only response userID,score // solrQuery.setFields("userID","score"); for (String fl : query.getFls()) { solrQuery.addField(fl); } int pageSize = query.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query.getLocationPoint(); Double distance = query.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } return solrQuery; }
From source file:com.databasepreservation.visualization.utils.SolrUtils.java
private static void setQueryFacetParameter(SolrQuery query, SimpleFacetParameter facetParameter) { query.addFacetField(facetParameter.getName()); if (facetParameter.getMinCount() != FacetParameter.DEFAULT_MIN_COUNT) { query.add(String.format("f.%s.facet.mincount", facetParameter.getName()), String.valueOf(facetParameter.getMinCount())); }/*from w w w . j a va2 s.com*/ if (facetParameter.getLimit() != SimpleFacetParameter.DEFAULT_LIMIT) { query.add(String.format("f.%s.facet.limit", facetParameter.getName()), String.valueOf(facetParameter.getLimit())); } }
From source file:com.frank.search.solr.core.DefaultQueryParser.java
License:Apache License
private void processStatsOptions(SolrQuery solrQuery, Query query) { StatsOptions statsOptions = query.getStatsOptions(); if (statsOptions == null || (CollectionUtils.isEmpty(statsOptions.getFields()) && CollectionUtils.isEmpty(statsOptions.getFacets()) && CollectionUtils.isEmpty(statsOptions.getSelectiveFacets()))) { return;//from www . jav a 2 s . c om } solrQuery.set(StatsParams.STATS, true); for (Field field : statsOptions.getFields()) { solrQuery.add(StatsParams.STATS_FIELD, field.getName()); String selectiveCalcDistinctParam = CommonParams.FIELD + "." + field.getName() + "." + StatsParams.STATS_CALC_DISTINCT; Boolean selectiveCountDistincts = statsOptions.isSelectiveCalcDistincts(field); if (selectiveCountDistincts != null) { solrQuery.add(selectiveCalcDistinctParam, String.valueOf(selectiveCountDistincts.booleanValue())); } } for (Field field : statsOptions.getFacets()) { solrQuery.add(StatsParams.STATS_FACET, field.getName()); } for (Entry<Field, Collection<Field>> entry : statsOptions.getSelectiveFacets().entrySet()) { Field field = entry.getKey(); String prefix = CommonParams.FIELD + "." + field.getName() + "."; String paramName = prefix + StatsParams.STATS_FACET; for (Field facetField : entry.getValue()) { solrQuery.add(paramName, facetField.getName()); } } }