List of usage examples for org.apache.solr.client.solrj SolrQuery setFacet
public SolrQuery setFacet(boolean b)
From source file:org.codelibs.fess.service.SearchService.java
License:Apache License
public List<Map<String, Object>> getDocumentList(final String query, final int start, final int rows, final FacetInfo facetInfo, final GeoInfo geoInfo, final MoreLikeThisInfo mltInfo, final String[] responseFields, final String[] docValuesFields, final boolean forUser) { if (start > queryHelper.getMaxSearchResultOffset()) { throw new ResultOffsetExceededException("The number of result size is exceeded."); }// w w w . j a v a 2s .c o m final long startTime = System.currentTimeMillis(); final SolrGroup solrGroup = solrGroupManager.getSolrGroup(QueryType.QUERY); QueryResponse queryResponse = null; final SolrQuery solrQuery = new SolrQuery(); final SearchQuery searchQuery = queryHelper.build(query, forUser); final String q = searchQuery.getQuery(); if (StringUtil.isNotBlank(q)) { // fields solrQuery.setFields(responseFields); // query solrQuery.setQuery(q); solrQuery.setStart(start); solrQuery.setRows(rows); solrQuery.set("mm", searchQuery.getMinimumShouldMatch()); solrQuery.set("defType", searchQuery.getDefType()); for (final Map.Entry<String, String[]> entry : queryHelper.getQueryParamMap().entrySet()) { solrQuery.set(entry.getKey(), entry.getValue()); } // filter query if (searchQuery.hasFilterQueries()) { solrQuery.addFilterQuery(searchQuery.getFilterQueries()); } // sort final SortField[] sortFields = searchQuery.getSortFields(); if (sortFields.length != 0) { for (final SortField sortField : sortFields) { solrQuery.addSort(sortField.getField(), Constants.DESC.equals(sortField.getOrder()) ? SolrQuery.ORDER.desc : SolrQuery.ORDER.asc); } } else if (queryHelper.hasDefaultSortFields()) { for (final SortField sortField : queryHelper.getDefaultSortFields()) { solrQuery.addSort(sortField.getField(), Constants.DESC.equals(sortField.getOrder()) ? SolrQuery.ORDER.desc : SolrQuery.ORDER.asc); } } // highlighting if (queryHelper.getHighlightingFields() != null && queryHelper.getHighlightingFields().length != 0) { for (final String hf : queryHelper.getHighlightingFields()) { solrQuery.addHighlightField(hf); } solrQuery.setHighlightSnippets(queryHelper.getHighlightSnippetSize()); } // shards if (queryHelper.getShards() != null) { solrQuery.setParam("shards", queryHelper.getShards()); } // geo if (geoInfo != null && geoInfo.isAvailable()) { solrQuery.addFilterQuery(geoInfo.toGeoQueryString()); final String additionalGeoQuery = queryHelper.getAdditionalGeoQuery(); if (StringUtil.isNotBlank(additionalGeoQuery)) { solrQuery.addFilterQuery(additionalGeoQuery); } } // facets if (facetInfo != null) { solrQuery.setFacet(true); if (facetInfo.field != null) { for (final String f : facetInfo.field) { if (queryHelper.isFacetField(f)) { solrQuery.addFacetField(f); } else { throw new FessSolrQueryException("EFESS0002", new Object[] { f }); } } } if (facetInfo.query != null) { for (final String fq : facetInfo.query) { final String facetQuery = queryHelper.buildFacetQuery(fq); if (StringUtil.isNotBlank(facetQuery)) { solrQuery.addFacetQuery(facetQuery); } else { throw new FessSolrQueryException("EFESS0003", new Object[] { fq, facetQuery }); } } } if (facetInfo.limit != null) { solrQuery.setFacetLimit(Integer.parseInt(facetInfo.limit)); } if (facetInfo.minCount != null) { solrQuery.setFacetMinCount(Integer.parseInt(facetInfo.minCount)); } if (facetInfo.missing != null) { solrQuery.setFacetMissing(Boolean.parseBoolean(facetInfo.missing)); } if (facetInfo.prefix != null) { solrQuery.setFacetPrefix(facetInfo.prefix); } if (facetInfo.sort != null && queryHelper.isFacetSortValue(facetInfo.sort)) { solrQuery.setFacetSort(facetInfo.sort); } } // mlt if (mltInfo != null) { final String mltField = queryHelper.getMoreLikeThisField(mltInfo.field); if (mltField != null) { solrQuery.set("mlt", true); if (mltInfo.count != null) { solrQuery.set("mlt.count", Integer.parseInt(mltInfo.count)); } solrQuery.set("mlt.fl", mltField); } } if (queryHelper.getTimeAllowed() >= 0) { solrQuery.setTimeAllowed(queryHelper.getTimeAllowed()); } final Set<Entry<String, String[]>> paramSet = queryHelper.getRequestParameterSet(); if (!paramSet.isEmpty()) { for (final Map.Entry<String, String[]> entry : paramSet) { solrQuery.set(entry.getKey(), entry.getValue()); } } if (docValuesFields != null) { for (final String docValuesField : docValuesFields) { solrQuery.add(Constants.DCF, docValuesField); } } queryResponse = solrGroup.query(solrQuery, SolrRequest.METHOD.POST); } final long execTime = System.currentTimeMillis() - startTime; final QueryResponseList queryResponseList = ComponentUtil.getQueryResponseList(); queryResponseList.init(queryResponse, rows); queryResponseList.setSearchQuery(q); queryResponseList.setSolrQuery(solrQuery.toString()); queryResponseList.setExecTime(execTime); return queryResponseList; }
From source file:org.codelibs.fess.web.admin.DocumentAction.java
License:Apache License
protected SessionIdList<Map<String, String>> getSessionIdList(final String groupName) { final SessionIdList<Map<String, String>> sessionIdList = new SessionIdList<Map<String, String>>(); SolrGroup serverGroup;// w w w. j a v a 2s . c om try { serverGroup = solrGroupManager.getSolrGroup(groupName); } catch (final Exception e) { if (logger.isInfoEnabled()) { logger.info(e.getMessage()); } return sessionIdList; } final SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setFacet(true); query.addFacetField(fieldHelper.segmentField); query.addSort(fieldHelper.segmentField, ORDER.desc); final QueryResponse queryResponse = serverGroup.query(query); final List<FacetField> facets = queryResponse.getFacetFields(); for (final FacetField facet : facets) { final List<FacetField.Count> facetEntries = facet.getValues(); if (facetEntries != null) { for (final FacetField.Count fcount : facetEntries) { final Map<String, String> map = new HashMap<String, String>(3); map.put("label", fcount.getName() + " (" + fcount.getCount() + ")"); map.put("value", fcount.getName()); map.put("count", Long.toString(fcount.getCount())); sessionIdList.add(map); sessionIdList.addTotalCount(fcount.getCount()); } } } return sessionIdList; }
From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java
License:Open Source License
public ServiceResponse<T> findByQuery(String query, int offset, int maxResults, String... facet) throws CrafterCommerceException { try {/*from w ww.ja va 2 s .c o m*/ String solrQueryStr = queryConverter.toSolrQuery(query); SolrQuery solrQuery = new SolrQuery(solrQueryStr); solrQuery.setStart(offset); solrQuery.setRows(maxResults); // construct facet parameters if (facet.length > 0) { solrQuery.setFacet(true); solrQuery.setFacetMinCount(2); // only get the facet if there are 2 or more values for (String _facet : facet) { solrQuery.addFacetField(_facet); } } // execute Solr query QueryResponse response = solrServer.query(solrQuery); Set<T> entities = toEntities(response); Set<Facet> facets = toFacets(response); // create the service response ServiceResponse<T> serviceResponse = new ServiceResponse<T>(); serviceResponse.setSuccess(true); serviceResponse.setEntities(entities); serviceResponse.setCount(response.getResults().getNumFound()); serviceResponse.setFacets(facets); String msg = ReturnMessageProvider.findByQueryMessage(getTypeArgument(), query, entities.size()); serviceResponse.setMessage(msg); // return the response return serviceResponse; } catch (Exception e) { LOGGER.error("Failed to find entities by query for query = " + query, e); return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage()); } }
From source file:org.dspace.app.cris.network.AVisualizationGraph.java
@Override public JsGraph search(String authority, String name, Integer level, boolean showExternal, boolean showSameDept, String dept, Integer modeEntity) throws Exception { SolrQuery solrQuery = new SolrQuery(); String query = buildQuery(authority, name, showSameDept, dept, modeEntity, level); String[] fqs = { "type:" + getConnectionName(), "entity:" + modeEntity }; solrQuery.setQuery(query);/*from www. java2 s . com*/ solrQuery.addFilterQuery(fqs); if (!showExternal && authority != null && !authority.isEmpty()) { solrQuery.addFilterQuery(new String[] { "a_auth:rp*", "b_auth:rp*" }); } solrQuery.setFacet(true); solrQuery.addFacetField(FACET_SEARCH); if (modeEntity == ConstantNetwork.ENTITY_RP) { solrQuery.setFacetLimit(getLimitLevel(level)); } else if (modeEntity == ConstantNetwork.ENTITY_DEPT) { solrQuery.setFacetLimit(Integer.MAX_VALUE); } solrQuery.setFacetMinCount(1); solrQuery.setRows(0); QueryResponse rsp = service.search(solrQuery); FacetField facets = rsp.getFacetField(FACET_SEARCH); JsGraph rsGraph = null; String src = null; if (authority != null && !authority.isEmpty()) { src = authority; rsGraph = new JsGraph(); rsGraph.setId(authority); rsGraph.setName(name); JsGraphNodeData dataNode = new JsGraphNodeData(); dataNode.setColor(getNodeCustomColor()); dataNode.setType(getType()); dataNode.setModeStyle("fill"); rsGraph.setData(dataNode); } else { src = name; rsGraph = new JsGraph(); rsGraph.setId(name); rsGraph.setName(name); JsGraphNodeData dataNodeLeaf = new JsGraphNodeData(); dataNodeLeaf.setColor(getNodeLeafCustomColor()); dataNodeLeaf.setType(getType()); dataNodeLeaf.setModeStyle("stroke"); rsGraph.setData(dataNodeLeaf); } if (rsGraph != null) { if (facets != null && facets.getValueCount() > 0) { for (Count facet : facets.getValues()) { if (facet.getCount() > 0) { String node2 = (String) facet.getName(); String split[] = node2.split("\\|\\|\\|"); String srcnode2 = null; String displayValue = ""; String authorityValue = null; boolean isAuthority = false; if (split.length > 1) { String[] splitAuthority = split[1].split(splitterAuthority); displayValue = splitAuthority[0]; srcnode2 = displayValue; if (splitAuthority.length > 1) { isAuthority = true; authorityValue = splitAuthority[1]; srcnode2 = authorityValue; } } else if (split.length == 1) { displayValue = split[0]; srcnode2 = displayValue; } if (!(src.equals(srcnode2))) { JsGraphAdjacence adjacence = new JsGraphAdjacence(); JsGraphData data = new JsGraphData(); adjacence.setSrc(node2); if (isAuthority) { adjacence.setNodeTo(authorityValue); } else { adjacence.setNodeTo(displayValue); } if (authorityValue != null || showExternal) { data.setColor(getEdgeCustomColor()); data.setLineWidth(getCustomLineWidth((int) facet.getCount())); data.setCount((int) facet.getCount()); data.setType(getType()); adjacence.setData(data); rsGraph.getAdjacencies().add(adjacence); } } } } } } return rsGraph; }
From source file:org.dspace.app.webui.cris.components.statistics.ASolrStatsConfigurerComponent.java
protected void _addBasicConfiguration(SolrQuery solrQuery, Integer yearsQuery) { solrQuery.setRows(0);//from w ww . j a v a2 s.c o m solrQuery.setFacet(true); solrQuery.set("facet.date", "time"); solrQuery.set("facet.date.end", "NOW/MONTH+1MONTH"); solrQuery.set("facet.date.start", "NOW/MONTH-" + yearsQuery + "YEARS"); solrQuery.set("facet.date.include", "upper"); solrQuery.set("facet.date.gap", "+1MONTHS"); // solrQuery.set("facet.mincount", "1"); }
From source file:org.dspace.app.webui.cris.components.statistics.StatSelectedObjectComponent.java
@Override public TreeKeyMap query(String id, HttpSolrServer solrServer) throws Exception { statisticDatasBeans = new TreeKeyMap(); if (id != null && !id.equals("") && StatComponentsService.getYearsQuery() != null) { solrServer.setMaxRetries(0);// w w w .j av a 2s .c om SolrQuery solrQuery = new SolrQuery(); _prepareBasicQuery(solrQuery, StatComponentsService.getYearsQuery()); if (StatComponentsService.isExcludeBot()) { solrQuery.addFilterQuery("-isBot:true"); } Integer relationType = getRelationObjectType(); if (relationType == null) { relationType = CrisConstants.getEntityType(getRelationObjectClass().newInstance()); } solrQuery.addFilterQuery("type:" + relationType); String query = STATS_QUERY; if (getBean() != null) { String beanQuery = getBean().getQuery(); query += (beanQuery != null && !beanQuery.isEmpty()) ? beanQuery : ""; for (String filter : getBean().getFilters()) { solrQuery.addFilterQuery(filter); } } solrQuery.setQuery(MessageFormat.format(query, id)); if (getBean() instanceof BeanFacetComponent) { BeanFacetComponent beanFacet = (BeanFacetComponent) getBean(); solrQuery.setFacet(true); solrQuery.addFacetQuery(beanFacet.getFacetQuery()); solrQuery.addFacetField(beanFacet.getFacetField()); } solrResponse = solrServer.query(solrQuery); buildPageResultModules(StatComponentsService._SELECTED_OBJECT); } else { throw new Exception("Item Id not valid"); } return statisticDatasBeans; }
From source file:org.dspace.app.webui.cris.components.statistics.StatTopObjectComponent.java
@Override public TreeKeyMap query(String id, HttpSolrServer solrServer) throws Exception { statisticDatasBeans = new TreeKeyMap(); if (id != null && !id.equals("") && StatComponentsService.getYearsQuery() != null) { // HttpSolrServer solrServer = new HttpSolrServer( // solrConfig.getUrl()+solrCore); solrServer.setMaxRetries(0);/*from w ww .j a v a 2 s . com*/ SolrQuery solrQuery = new SolrQuery(); // http://localhost:8983/solr/statistics/select/?q=type%3A2&rows=20&facet=true&facet.date=time&facet.date.start=2008-07-00T00:00:00.000Z&facet.date.end=2009-06-31T00:00:00.000Z&facet.date.gap=%2B1MONTHS&facet.field=id _prepareBasicQuery(solrQuery, StatComponentsService.getYearsQuery()); // _prepareTopQuery(type, id, fieldName, solrQuery); if (StatComponentsService.isExcludeBot()) { solrQuery.addFilterQuery("-isBot:true"); } Integer relationType = getRelationObjectType(); if (relationType == null) { relationType = CrisConstants.getEntityType(getRelationObjectClass().newInstance()); } solrQuery.addFilterQuery("type:" + relationType); for (String filter : getBean().getFilters()) { solrQuery.addFilterQuery(filter); } String query = MessageFormat.format(QUERY_COMMON, getFromField(), getBean().getQuery()); String sID = getObjectId(id); query = MessageFormat.format(query, sID); solrQuery.setQuery(query); if (getBean() instanceof BeanFacetComponent) { BeanFacetComponent beanFacet = (BeanFacetComponent) getBean(); solrQuery.setFacet(true); solrQuery.addFacetQuery(beanFacet.getFacetQuery()); solrQuery.addFacetField(beanFacet.getFacetField()); } solrResponse = solrServer.query(solrQuery); if (!getBean().getSubQueries().isEmpty()) { statisticDatasBeans.addValue(TOP, CrisConstants.getEntityTypeText(relationType), CATEGORY, generateCategoryView(solrServer, TOP, relationType.toString(), CATEGORY, StatComponentsService.getTopCityLength(), query, getBean().getSubQueries(), sID)); } buildTopResultModules(relationType); } else { throw new Exception("Object Id not valid"); } return statisticDatasBeans; }
From source file:org.dspace.app.webui.cris.controller.PJSearchFormController.java
@Override protected Map referenceData(HttpServletRequest request) throws Exception { Map<String, Object> model = new HashMap<String, Object>(); Context context = UIUtil.obtainContext(request); EPerson currUser = context.getCurrentUser(); boolean isAdmin = AuthorizeManager.isAdmin(context); if (currUser != null) { model.put("researcher_page_menu", new Boolean(true)); }// w ww .j a v a 2 s . c o m if (isAdmin) { model.put("see_search_grantcode", new Boolean(true)); } SolrQuery query = new SolrQuery(); query.setQuery("disabled:false"); query.setFacet(true); query.setFacetLimit(-1); query.setFacetMinCount(1); query.setFacetMissing(true); query.setFacetSort(FacetParams.FACET_SORT_INDEX); // check table name query.addFacetField("pjsponsor_filter"); query.addFacetField("pjstatus_filter"); query.setRows(0); QueryResponse qResponse = ((CrisSearchService) searchService).search(query); FacetField facetField = qResponse.getFacetField("pjsponsor_filter"); List<DiscoverResult.FacetResult> sponsors = new ArrayList<DiscoverResult.FacetResult>(); List<Count> values = facetField.getValues(); if (values != null) { for (FacetField.Count facetValue : values) { DiscoverResult.FacetResult fr = searchService.getDiscoveryFacet(context, facetField, facetValue); sponsors.add(fr); } } FacetField facetFieldStatus = qResponse.getFacetField("pjstatus_filter"); List<DiscoverResult.FacetResult> status = new ArrayList<DiscoverResult.FacetResult>(); List<Count> valuesStatus = facetFieldStatus.getValues(); if (valuesStatus != null) { for (FacetField.Count facetValue : valuesStatus) { DiscoverResult.FacetResult fr = searchService.getDiscoveryFacet(context, facetFieldStatus, facetValue); status.add(fr); } } DiscoveryConfiguration discoveryConf = SearchUtils.getDiscoveryConfigurationByName("crisproject"); List<String> searchFields = new LinkedList<String>(); for (DiscoverySearchFilter field : discoveryConf.getSearchFilters()) { searchFields.add(field.getIndexFieldName()); } model.put("state", status); model.put("sponsors", sponsors); model.put("fields", searchFields); return model; }
From source file:org.dspace.app.webui.cris.controller.RPSearchFormController.java
@Override protected Map referenceData(HttpServletRequest request) throws Exception { Map<String, Object> model = new HashMap<String, Object>(); Context context = UIUtil.obtainContext(request); EPerson currUser = context.getCurrentUser(); boolean isAdmin = AuthorizeManager.isAdmin(context); if (currUser != null) { model.put("researcher_page_menu", new Boolean(true)); }/*from ww w.j a va2s . c om*/ if (isAdmin) { model.put("see_search_staffno", new Boolean(true)); model.put("see_search_rp", new Boolean(true));// not used on jsp // (now search for // RP // is public) } SolrQuery query = new SolrQuery(); query.setQuery("disabled:false"); query.setFacet(true); query.setFacetLimit(-1); query.setFacetMinCount(1); query.setFacetMissing(true); query.setFacetSort(FacetParams.FACET_SORT_INDEX); // check table name query.addFacetField("faculty_filter"); query.setRows(0); QueryResponse qResponse = ((CrisSearchService) searchService).search(query); FacetField facetField = qResponse.getFacetField("faculty_filter"); List<DiscoverResult.FacetResult> faculties = new ArrayList<DiscoverResult.FacetResult>(); List<Count> values = facetField.getValues(); if (values != null) { for (FacetField.Count facetValue : values) { DiscoverResult.FacetResult fr = searchService.getDiscoveryFacet(context, facetField, facetValue); faculties.add(fr); } } DiscoveryConfiguration discoveryConf = SearchUtils.getDiscoveryConfigurationByName("crisrp"); List<String> searchFields = new LinkedList<String>(); for (DiscoverySearchFilter field : discoveryConf.getSearchFilters()) { searchFields.add(field.getIndexFieldName()); } model.put("faculties", faculties); model.put("fields", searchFields); return model; }
From source file:org.dspace.app.webui.cris.servlet.DeptNetworkServlet.java
private QueryResponse shootQuery(String query, boolean facet, String facetField) throws SearchServiceException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query);//from w w w .ja v a 2s .co m solrQuery.setStart(0); solrQuery.setRows(0); if (facet) { solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.addFacetField(facetField); } QueryResponse rsp = service.search(solrQuery); return rsp; }