Example usage for org.apache.solr.client.solrj SolrQuery setFacet

List of usage examples for org.apache.solr.client.solrj SolrQuery setFacet

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setFacet.

Prototype

public SolrQuery setFacet(boolean b) 

Source Link

Document

enable/disable faceting.

Usage

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;
}