Example usage for org.apache.solr.common.params FacetParams FACET_DATE

List of usage examples for org.apache.solr.common.params FacetParams FACET_DATE

Introduction

In this page you can find the example usage for org.apache.solr.common.params FacetParams FACET_DATE.

Prototype

String FACET_DATE

To view the source code for org.apache.solr.common.params FacetParams FACET_DATE.

Click Source Link

Document

Any field whose terms the user wants to enumerate over for Facet Contraint Counts (multi-value)

Usage

From source file:org.apache.jackrabbit.core.query.lucene.FacetHandler.java

License:Open Source License

private void extractFacetParameters(String facetFunctionPrefix, NamedList<Object> parameters, int counter,
        Map.Entry<String, PropertyValue> column) throws RepositoryException {
    // first extract options from rep:facet() from column key
    final String key = column.getKey();
    final String facetOptions = key.substring(key.indexOf(facetFunctionPrefix) + facetFunctionPrefix.length(),
            key.lastIndexOf(")"));

    // remember nodetype and query values if encountered so that we can process them once the whole facet is parsed
    String nodeType = null;/*from w w  w  .j a  va2 s.c o m*/
    List<String> unparsedQueries = null;

    // loop invariants
    final String columnPropertyName = column.getValue().getPropertyName();
    final String propertyName = columnPropertyName + SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR + counter;

    // we can assert the facet type by checking whether the the options String contains date or range, otherwise, the type is field
    final boolean isQuery = facetOptions.contains(FacetParams.FACET_QUERY);
    String facetType = FacetParams.FACET_FIELD; // default facet type
    if (isQuery) {
        facetType = FacetParams.FACET_QUERY;
    } else if (facetOptions.contains("date")) {
        facetType = FacetParams.FACET_DATE;
    } else if (facetOptions.contains("range")) {
        facetType = FacetParams.FACET_RANGE;
    }
    parameters.add(facetType, propertyName);

    // populate parameters
    // each parameter name/value pair is separated from the next one by & so split on this
    final String[] paramPairs = StringUtils.split(facetOptions, "&");
    for (String paramPair : paramPairs) {
        // for each pair, extract the name and value separated by =
        int separator = paramPair.indexOf('=');
        if (separator >= 0) { // todo: what should we do if a pair doesn't have an equal sign in it?
            final String paramName = paramPair.substring(0, separator);
            final String paramValue = paramPair.substring(separator + 1);

            // some parameters need to be specially processed and not be added as others so process them and exit current iteration when encountered
            if (paramName.equals("nodetype")) {
                nodeType = paramValue; // remember node type value for later processing
                continue;
            } else if (paramName.contains("query")) {
                if (unparsedQueries == null) {
                    unparsedQueries = new LinkedList<String>();
                }
                unparsedQueries.add(paramValue); // remember query value for later processing
                continue;
            }

            // create full parameter name and add its value to the parameters
            String facetOption = getFacetOption(paramName);
            parameters.add(getFullParameterName(propertyName, facetOption), paramValue);
        }
    }

    // node type parameter
    if (StringUtils.isEmpty(nodeType)) {
        // if we didn't have a node type specified in the given options, extract it from the selector name and create the associated parameter
        nodeType = getNodeTypeFromSelector(column.getValue().getSelectorName(), columnPropertyName);
    }

    // only add node type parameter if we're not dealing with a query
    if (!isQuery) {
        parameters.add(getFullParameterName(propertyName, getFacetOption("nodetype")), nodeType);
    }

    // deal with embedded query if needed, at this point, nodeType will have been either extracted or asserted from selector name
    if (unparsedQueries != null) {
        ExtendedPropertyDefinition epd = NodeTypeRegistry.getInstance().getNodeType(nodeType)
                .getPropertyDefinition(columnPropertyName);

        for (String unparsedQuery : unparsedQueries) {
            if (unparsedQuery.split("(?<!\\\\):").length == 1 && !columnPropertyName.equals("rep:facet()")) {
                if (epd != null) {
                    String fieldNameInIndex = getFieldNameInIndex(propertyName, epd, "");
                    unparsedQuery = QueryParser.escape(fieldNameInIndex) + ":" + unparsedQuery;
                }
            }
            parameters.add(getFullParameterName(propertyName, "query"), unparsedQuery);
        }
    }
}

From source file:org.dspace.app.xmlui.aspect.discovery.AbstractFiltersTransformer.java

License:Open Source License

protected SolrQuery prepareDefaultFilters(String scope) {

    queryArgs = new SolrQuery();

    /* Get Dynamic list of Facets off Request *
    for(String facet : getFacetsList())/*from  w w w  .  j  a  v a  2s. c  o m*/
    {
    queryArgs.addFacetField(facet);
    int max = ConfigurationManager.getIntProperty("search.facet.max", 10) + 1;
    //Set the default limit to 11
    queryArgs.setFacetLimit(max);
    queryArgs.setFacetMinCount(1);
    queryArgs.setFacet(true);
    }                                     */

    String[] facets = SearchUtils.getFacetsForType(scope);
    String[] dateFacets = SearchUtils.getDateFacetsForType(scope);

    log.debug("facets for scope '" + scope + "': " + (facets != null ? facets.length : null));
    log.debug("date facets for scope, " + scope + ": " + (dateFacets != null ? dateFacets.length : null));

    if (facets != null || dateFacets != null) {
        int max = ConfigurationManager.getIntProperty("search.facet.max", 10) + 1;
        //Set the default limit to 11
        queryArgs.setFacetLimit(max);
        queryArgs.setFacetMinCount(1);
        queryArgs.setFacet(true);
    }

    /** enable faceting of search results */
    if (facets != null)
        queryArgs.addFacetField(facets);

    /** add any dateFacets configured */
    if (dateFacets != null && 0 < dateFacets.length) {
        queryArgs.setParam(FacetParams.FACET_DATE, dateFacets);
        queryArgs.setParam(FacetParams.FACET_DATE_GAP, "+1YEAR");
        queryArgs.setParam(FacetParams.FACET_DATE_START,
                "NOW/YEAR-" + SearchUtils.getConfig().getString("solr.date.gap", "10") + "YEARS");
        queryArgs.setParam(FacetParams.FACET_DATE_END, "NOW");
        queryArgs.setParam(FacetParams.FACET_DATE_OTHER, FacetParams.FacetDateOther.ALL.toString());
    }

    //Add the default filters
    queryArgs.addFilterQuery(SearchUtils.getDefaultFilters(scope));

    return queryArgs;
}

From source file:org.dspace.app.xmlui.aspect.discovery.BrowseFacet.java

License:Open Source License

/**
 * Get the recently submitted items for the given community or collection.
 *
 * @param scope The collection.// w  ww . j  a v a2 s  . c om
 */
protected QueryResponse getQueryResponse(DSpaceObject scope) {

    Request request = ObjectModelHelper.getRequest(objectModel);

    if (queryResults != null) {
        return queryResults;
    }

    queryArgs = new SolrQuery();

    //Make sure we add our default filters
    queryArgs.addFilterQuery(SearchUtils.getDefaultFilters(BROWSE_URL_BASE));

    queryArgs.setQuery("search.resourcetype: " + Constants.ITEM
            + ((request.getParameter("query") != null && !"".equals(request.getParameter("query")))
                    ? " AND (" + request.getParameter("query") + ")"
                    : ""));
    //        queryArgs.setQuery("search.resourcetype:" + Constants.ITEM);

    queryArgs.setRows(0);

    queryArgs.setSortField(ConfigurationManager.getProperty("recent.submissions.sort-option"),
            getParameterOrder());

    queryArgs.addFilterQuery(getParameterFacetQueries());

    queryArgs.setFacet(true);

    //Set the default limit to 11
    //query.setFacetLimit(11);
    queryArgs.setFacetMinCount(1);

    //sort
    //TODO: why this kind of sorting ? Should the sort not be on how many times the value appears like we do in the filter by sidebar ?
    queryArgs.setFacetSort(getParameterSortBy());

    String facetField = getParameterField();

    int page = getParameterPage();
    int rpp = getParameterRpp();

    // FIXME: Have to retrieve everything, since there is no way of getting total facets in order to do masked pagination.
    //        queryArgs.setParam(FacetParams.FACET_OFFSET, String.valueOf((page - 1) * rpp));
    //        queryArgs.setFacetLimit(rpp);//setParam(FacetParams.FACET_LIMIT, String.valueOf(rpp));
    queryArgs.setFacetLimit(-1);

    //        int offset = RequestUtils.getIntParameter(request, OFFSET);
    //        if (offset == -1) {
    //            offset = 0;
    //        }
    //        if (facetField != null && facetField.endsWith(".year")) {
    //            queryArgs.setParam(FacetParams.FACET_OFFSET, "0");
    //            queryArgs.setParam(FacetParams.FACET_LIMIT, "1000000");
    //            facetField = facetField.replace(".year", "");
    //        } else {
    //            queryArgs.setParam(FacetParams.FACET_OFFSET, String.valueOf(offset));
    //We add +1 so we can use the extra one to make sure that we need to show the next page
    //            queryArgs.setParam(FacetParams.FACET_LIMIT, String.valueOf(rpp));
    //        }

    if (scope != null) /* top level search / community */ {
        if (scope instanceof Community) {
            //queryArgs.setFilterQueries("location:m" + scope.getID());
            queryArgs.addFilterQuery("location:m" + scope.getID());
        } else if (scope instanceof Collection) {
            //queryArgs.setFilterQueries("location:l" + scope.getID());
            queryArgs.addFilterQuery("location:l" + scope.getID());
        }
    }

    boolean isDate = false;
    if (facetField != null && facetField.endsWith("_dt")) {
        facetField = facetField.split("_")[0];
        isDate = true;
    }

    if (isDate) {

        queryArgs.setParam(FacetParams.FACET_DATE, new String[] { facetField });
        queryArgs.setParam(FacetParams.FACET_DATE_GAP, "+1YEAR");

        Date lowestDate = getLowestDateValue(queryArgs.getQuery(), facetField, queryArgs.getFilterQueries());
        int thisYear = Calendar.getInstance().get(Calendar.YEAR);

        DateFormat formatter = new SimpleDateFormat("yyyy");
        int maxEndYear = Integer.parseInt(formatter.format(lowestDate));

        //Since we have a date, we need to find the last year
        String startDate = "NOW/YEAR-" + SearchUtils.getConfig().getString("solr.date.gap", "10") + "YEARS";
        String endDate = "NOW";
        //            int startYear = thisYear - (offset + DEFAULT_PAGE_SIZE);
        int startYear = thisYear - ((page - 1) * rpp);
        // We shouldn't go lower then our max bottom year
        // Make sure to substract one so the bottom year is also counted !
        if (startYear < maxEndYear) {
            startYear = maxEndYear - 1;
        }

        //            if (0 < offset) {
        if (page > 1) {
            //Say that we have an offset of 10 years
            //we need to go back 10 years (2010 - (2010 - 10))
            //(add one to compensate for the NOW in the start)
            //                int endYear = thisYear - offset + 1;
            int endYear = thisYear - ((page - 1) * rpp) + 1;

            endDate = "NOW/YEAR-" + (thisYear - endYear) + "YEARS";
            //Add one to the startyear to get one more result
            //When we select NOW, the current year is also used (so auto+1)
        }
        startDate = "NOW/YEAR-" + (thisYear - startYear) + "YEARS";

        queryArgs.setParam(FacetParams.FACET_DATE_START, startDate);
        queryArgs.setParam(FacetParams.FACET_DATE_END, endDate);

        queryArgs.setFacetMinCount(1);

        System.out.println(startDate);
        System.out.println(endDate);

    } else {
        queryArgs.addFacetField(new String[] { facetField });
    }

    //        log.debug("queryArgs: " + queryArgs.toString());

    String startsWith = getParameterStartsWith();
    if (startsWith != null) {
        queryArgs.setFacetPrefix(facetField, startsWith);
    }

    try {
        queryResults = searchService.search(queryArgs);
    } catch (SearchServiceException e) {
        log.error(e.getMessage(), e);
    }

    return queryResults;
}

From source file:org.dspace.app.xmlui.aspect.discovery.SearchFacetFilter.java

License:BSD License

/**
 * Get the recently submitted items for the given community or collection.
 *
 * @param scope The collection.// w w  w. j  a  v  a2 s  .  com
 */
protected QueryResponse getQueryResponse(DSpaceObject scope) {

    Request request = ObjectModelHelper.getRequest(objectModel);

    if (queryResults != null) {
        return queryResults;
    }

    queryArgs = new SolrQuery();

    //Make sure we add our default filters
    queryArgs.addFilterQuery(SearchUtils.getDefaultFilters("search"));

    queryArgs.setQuery("search.resourcetype: " + Constants.ITEM
            + ((request.getParameter("query") != null && !"".equals(request.getParameter("query")))
                    ? " AND (" + request.getParameter("query") + ")"
                    : ""));
    //        queryArgs.setQuery("search.resourcetype:" + Constants.ITEM);

    queryArgs.setRows(0);

    queryArgs.addFilterQuery(getParameterFilterQueries());

    //Set the default limit to 11
    //query.setFacetLimit(11);
    queryArgs.setFacetMinCount(1);

    //sort
    //TODO: why this kind of sorting ? Should the sort not be on how many times the value appears like we do in the filter by sidebar ?
    queryArgs.setFacetSort(config.getPropertyAsType("solr.browse.sort", "lex"));

    queryArgs.setFacet(true);
    String facetField = request.getParameter(SearchFilterParam.FACET_FIELD);

    int offset = RequestUtils.getIntParameter(request, SearchFilterParam.OFFSET);
    if (offset == -1) {
        offset = 0;
    }
    if (facetField.endsWith(".year")) {
        //            TODO: dates are now handled in another way, throw this away?
        queryArgs.setParam(FacetParams.FACET_OFFSET, "0");
        queryArgs.setParam(FacetParams.FACET_LIMIT, "1000000");

    } else {
        queryArgs.setParam(FacetParams.FACET_OFFSET, String.valueOf(offset));

        //We add +1 so we can use the extra one to make sure that we need to show the next page
        queryArgs.setParam(FacetParams.FACET_LIMIT, String.valueOf(DEFAULT_PAGE_SIZE + 1));
    }

    if (scope != null) /* top level search / community */ {
        if (scope instanceof Community) {
            queryArgs.setFilterQueries("location:m" + scope.getID());
        } else if (scope instanceof Collection) {
            queryArgs.setFilterQueries("location:l" + scope.getID());
        }
    }

    boolean isDate = false;
    if (facetField.endsWith("_dt")) {
        facetField = facetField.split("_")[0];
        isDate = true;
    }

    if (isDate) {

        queryArgs.setParam(FacetParams.FACET_DATE, facetField);
        queryArgs.setParam(FacetParams.FACET_DATE_GAP, "+1YEAR");

        Date lowestDate = getLowestDateValue(queryArgs.getQuery(), facetField, queryArgs.getFilterQueries());
        int thisYear = Calendar.getInstance().get(Calendar.YEAR);

        DateFormat formatter = new SimpleDateFormat("yyyy");
        int maxEndYear = Integer.parseInt(formatter.format(lowestDate));

        //Since we have a date, we need to find the last year
        String startDate = "NOW/YEAR-" + SearchUtils.getConfig().getString("solr.date.gap", "10") + "YEARS";
        String endDate = "NOW";
        int startYear = thisYear - (offset + DEFAULT_PAGE_SIZE);
        // We shouldn't go lower then our max bottom year
        // Make sure to substract one so the bottom year is also counted !
        if (startYear < maxEndYear) {
            startYear = maxEndYear - 1;
        }

        if (0 < offset) {
            //Say that we have an offset of 10 years
            //we need to go back 10 years (2010 - (2010 - 10))
            //(add one to compensate for the NOW in the start)
            int endYear = thisYear - offset + 1;

            endDate = "NOW/YEAR-" + (thisYear - endYear) + "YEARS";
            //Add one to the startyear to get one more result
            //When we select NOW, the current year is also used (so auto+1)
        }
        startDate = "NOW/YEAR-" + (thisYear - startYear) + "YEARS";

        queryArgs.setParam(FacetParams.FACET_DATE_START, startDate);
        queryArgs.setParam(FacetParams.FACET_DATE_END, endDate);

        System.out.println(startDate);
        System.out.println(endDate);

    } else {
        if (request.getParameter(SearchFilterParam.STARTS_WITH) != null) {
            queryArgs.setFacetPrefix(facetField,
                    request.getParameter(SearchFilterParam.STARTS_WITH).toLowerCase());
        }

        queryArgs.addFacetField(facetField);
    }

    try {
        queryResults = searchService.search(queryArgs);
    } catch (SearchServiceException e) {
        log.error(e.getMessage(), e);
    }

    return queryResults;
}

From source file:org.jahia.services.search.facets.SimpleJahiaJcrFacets.java

License:Open Source License

/**
 * Returns a list of value constraints and the associated facet counts for each facet date field, range, and interval specified in the
 * SolrParams/*w w w. jav  a2s  .co m*/
 * 
 * @see FacetParams#FACET_DATE
 * @deprecated Use getFacetRangeCounts which is more generalized
 */
@Deprecated
public NamedList<Object> getFacetDateCounts() throws JahiaException, IOException, RepositoryException {

    final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
    final String[] fields = params.getParams(FacetParams.FACET_DATE);

    if (null == fields || 0 == fields.length)
        return resOuter;

    for (String f : fields) {
        try {
            getFacetDateCounts(f, resOuter);
        } catch (Exception e) {
            String msg = "Exception during facet.date of " + f;
            logger.warn(msg, e);
            addException(msg, e);
        }
    }

    return resOuter;
}

From source file:org.jahia.services.search.facets.SimpleJahiaJcrFacets.java

License:Open Source License

/**
 * @deprecated Use getFacetRangeCounts which is more generalized
 *//*from www .  j  ava  2  s  . c o m*/
@Deprecated
public void getFacetDateCounts(String dateFacet, NamedList<Object> resOuter)
        throws IOException, ParseException, RepositoryException, JahiaException {

    parseParams(FacetParams.FACET_DATE, dateFacet);
    String f = facetValue;

    final NamedList<Object> resInner = new SimpleOrderedMap<Object>();
    String fieldName = StringUtils.substringBeforeLast(f, PROPNAME_INDEX_SEPARATOR);
    ExtendedPropertyDefinition epd = NodeTypeRegistry.getInstance()
            .getNodeType(params.get("f." + f + ".facet.nodetype")).getPropertyDefinition(fieldName);
    String fieldNameInIndex = getFieldNameInIndex(f, fieldName, epd, params.getFieldParam(f, "facet.locale"));
    String prefix = params.getFieldParam(f, FacetParams.FACET_PREFIX);
    DateField ft = StringUtils.isEmpty(prefix) ? JahiaQueryParser.DATE_TYPE : JahiaQueryParser.JR_DATE_TYPE;
    final SchemaField sf = new SchemaField(fieldNameInIndex, ft);

    // TODO: Should we use the key now ?
    //    resOuter.add(key, resInner);
    resOuter.add(fieldName + PROPNAME_INDEX_SEPARATOR + fieldNameInIndex, resInner);

    if (!(epd.getRequiredType() == PropertyType.DATE)) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "Can not date facet on a field which is not a DateField: " + f);
    }
    Integer minCount = params.getFieldInt(f, FacetParams.FACET_MINCOUNT);
    if (minCount == null) {
        Boolean zeros = params.getFieldBool(f, FacetParams.FACET_ZEROS);
        // mincount = (zeros!=null && zeros) ? 0 : 1;
        minCount = (zeros != null && !zeros) ? 1 : 0;
        // current default is to include zeros.
    }

    final String startS = required.getFieldParam(f, FacetParams.FACET_DATE_START);
    final Date start;
    try {
        start = JahiaQueryParser.DATE_TYPE.parseMath(NOW, startS);
    } catch (SolrException e) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "date facet 'start' is not a valid Date string: " + startS, e);
    }
    final String endS = required.getFieldParam(f, FacetParams.FACET_DATE_END);
    Date end; // not final, hardend may change this
    try {
        end = JahiaQueryParser.DATE_TYPE.parseMath(NOW, endS);
    } catch (SolrException e) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "date facet 'end' is not a valid Date string: " + endS, e);
    }

    if (end.before(start)) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "date facet 'end' comes before 'start': " + endS + " < " + startS);
    }

    final String gap = required.getFieldParam(f, FacetParams.FACET_DATE_GAP);
    final DateMathParser dmp = new DateMathParser(DateField.UTC, Locale.US);
    dmp.setNow(NOW);

    String[] iStrs = params.getFieldParams(f, FacetParams.FACET_DATE_INCLUDE);
    // Legacy support for default of [lower,upper,edge] for date faceting
    // this is not handled by FacetRangeInclude.parseParam because
    // range faceting has differnet defaults
    final EnumSet<FacetRangeInclude> include = (null == iStrs || 0 == iStrs.length)
            ? EnumSet.of(FacetRangeInclude.LOWER, FacetRangeInclude.UPPER, FacetRangeInclude.EDGE)
            : FacetRangeInclude.parseParam(iStrs);

    try {
        Date low = start;
        while (low.before(end)) {
            dmp.setNow(low);
            String label = JahiaQueryParser.DATE_TYPE.toExternal(low);

            Date high = dmp.parseMath(gap);
            if (end.before(high)) {
                if (params.getFieldBool(f, FacetParams.FACET_DATE_HARD_END, false)) {
                    high = end;
                } else {
                    end = high;
                }
            }
            if (high.before(low)) {
                throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                        "date facet infinite loop (is gap negative?)");
            }
            final boolean includeLower = (include.contains(FacetRangeInclude.LOWER)
                    || (include.contains(FacetRangeInclude.EDGE) && low.equals(start)));
            final boolean includeUpper = (include.contains(FacetRangeInclude.UPPER)
                    || (include.contains(FacetRangeInclude.EDGE) && high.equals(end)));

            Query rangeQuery = getRangeQuery(ft, null, sf, prefix, low, high, includeLower, includeUpper);

            int count = rangeCount(rangeQuery);
            if (count >= minCount) {
                // TODO: Can we use just label here ?                  
                resInner.add(label + PROPNAME_INDEX_SEPARATOR + rangeQuery.toString(), count);
            }
            low = high;
        }
    } catch (java.text.ParseException e) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "date facet 'gap' is not a valid Date Math string: " + gap, e);
    }

    // explicitly return the gap and end so all the counts are meaningful
    resInner.add("gap", gap);
    resInner.add("start", start);
    resInner.add("end", end);

    final String[] othersP = params.getFieldParams(f, FacetParams.FACET_DATE_OTHER);
    if (null != othersP && 0 < othersP.length) {
        final Set<FacetDateOther> others = EnumSet.noneOf(FacetDateOther.class);

        for (final String o : othersP) {
            others.add(FacetDateOther.get(o));
        }

        // no matter what other values are listed, we don't do
        // anything if "none" is specified.
        if (!others.contains(FacetDateOther.NONE)) {
            boolean all = others.contains(FacetDateOther.ALL);

            if (all || others.contains(FacetDateOther.BEFORE)) {
                Query rangeQuery = getRangeQuery(ft, null, sf, prefix, null, start, false,
                        (include.contains(FacetRangeInclude.OUTER)
                                || (!(include.contains(FacetRangeInclude.LOWER)
                                        || include.contains(FacetRangeInclude.EDGE)))));
                int count = rangeCount(rangeQuery);
                if (count >= minCount) {
                    resInner.add(
                            FacetDateOther.BEFORE.toString() + PROPNAME_INDEX_SEPARATOR + rangeQuery.toString(),
                            count);
                }
            }
            if (all || others.contains(FacetDateOther.AFTER)) {
                Query rangeQuery = getRangeQuery(ft, null, sf, prefix, end, null,
                        (include.contains(FacetRangeInclude.OUTER)
                                || (!(include.contains(FacetRangeInclude.UPPER)
                                        || include.contains(FacetRangeInclude.EDGE)))),
                        false);
                int count = rangeCount(rangeQuery);
                if (count >= minCount) {
                    resInner.add(
                            FacetDateOther.AFTER.toString() + PROPNAME_INDEX_SEPARATOR + rangeQuery.toString(),
                            count);
                }
            }
            if (all || others.contains(FacetDateOther.BETWEEN)) {
                Query rangeQuery = getRangeQuery(ft, null, sf, prefix, start, end,
                        (include.contains(FacetRangeInclude.LOWER) || include.contains(FacetRangeInclude.EDGE)),
                        (include.contains(FacetRangeInclude.UPPER)
                                || include.contains(FacetRangeInclude.EDGE)));
                int count = rangeCount(rangeQuery);
                if (count >= minCount) {
                    resInner.add(FacetDateOther.BETWEEN.toString() + PROPNAME_INDEX_SEPARATOR
                            + rangeQuery.toString(), count);
                }
            }
        }
    }
}