Example usage for org.springframework.data.solr.core.query FacetQuery getFacetOptions

List of usage examples for org.springframework.data.solr.core.query FacetQuery getFacetOptions

Introduction

In this page you can find the example usage for org.springframework.data.solr.core.query FacetQuery getFacetOptions.

Prototype

@Nullable
FacetOptions getFacetOptions();

Source Link

Usage

From source file:org.springframework.data.solr.core.DefaultQueryParser.java

private boolean enableFaceting(SolrQuery solrQuery, FacetQuery query) {
    FacetOptions facetOptions = query.getFacetOptions();
    if (facetOptions == null || (!facetOptions.hasFields() && !facetOptions.hasFacetQueries()
            && !facetOptions.hasPivotFields())) {
        return false;
    }/*w  w w.  ja v a2 s . c  o  m*/
    solrQuery.setFacet(true);
    solrQuery.setFacetMinCount(facetOptions.getFacetMinCount());
    solrQuery.setFacetLimit(facetOptions.getPageable().getPageSize());
    if (facetOptions.getPageable().getPageNumber() > 0) {
        solrQuery.set(FacetParams.FACET_OFFSET, facetOptions.getPageable().getOffset());
    }
    if (FacetOptions.FacetSort.INDEX.equals(facetOptions.getFacetSort())) {
        solrQuery.setFacetSort(FacetParams.FACET_SORT_INDEX);
    }
    return true;
}

From source file:org.springframework.data.solr.core.DefaultQueryParser.java

private void appendFacetingOnFields(SolrQuery solrQuery, FacetQuery query) {
    FacetOptions facetOptions = query.getFacetOptions();
    if (facetOptions.getPageable().getPageNumber() > 0) {
        solrQuery.set(FacetParams.FACET_OFFSET, facetOptions.getPageable().getOffset());
    }/*from www. j  a v  a 2 s .  c o  m*/
    solrQuery.addFacetField(convertFieldListToStringArray(facetOptions.getFacetOnFields()));
    if (facetOptions.hasFacetPrefix()) {
        solrQuery.setFacetPrefix(facetOptions.getFacetPrefix());
    }
    for (FieldWithFacetParameters parametrizedField : facetOptions.getFieldsWithParameters()) {
        addPerFieldFacetParameters(solrQuery, parametrizedField);
        if (parametrizedField.getSort() != null
                && FacetOptions.FacetSort.INDEX.equals(parametrizedField.getSort())) {
            addFieldSpecificParameterToSolrQuery(solrQuery, parametrizedField,
                    new FacetParameter(FacetParams.FACET_SORT, FacetParams.FACET_SORT_INDEX));
        }

    }
}

From source file:org.springframework.data.solr.core.DefaultQueryParser.java

private void appendFacetingQueries(SolrQuery solrQuery, FacetQuery query) {
    FacetOptions facetOptions = query.getFacetOptions();
    for (SolrDataQuery fq : facetOptions.getFacetQueries()) {
        String facetQueryString = getQueryString(fq);
        if (StringUtils.isNotBlank(facetQueryString)) {
            solrQuery.addFacetQuery(facetQueryString);
        }//from ww  w .  j a  v a  2s .  co m
    }
}

From source file:org.springframework.data.solr.core.DefaultQueryParser.java

private void appendFacetingOnPivot(SolrQuery solrQuery, FacetQuery query) {
    if (VersionUtil.isSolr3XAvailable()) {
        throw new UnsupportedOperationException(
                "Pivot Facets are not available for solr version lower than 4.x - Please check your depdendencies.");
    }//from  w ww .j  a v a 2  s  .  c  om

    FacetOptions facetOptions = query.getFacetOptions();
    String[] pivotFields = convertFieldListToStringArray(facetOptions.getFacetOnPivots());
    solrQuery.addFacetPivotField(pivotFields);
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

@Test
public void testConstructSolrQueryWithFacetSort() {
    FacetQuery query = new SimpleFacetQuery(new Criteria("field_1").is("value_1"))
            .setFacetOptions(new FacetOptions("facet_1").setFacetSort(FacetOptions.FacetSort.INDEX));
    SolrQuery solrQuery = queryParser.constructSolrQuery(query);
    Assert.assertEquals("index", solrQuery.getFacetSortString());

    query.getFacetOptions().setFacetSort(FacetOptions.FacetSort.COUNT);
    solrQuery = queryParser.constructSolrQuery(query);
    Assert.assertEquals("count", solrQuery.getFacetSortString());
}

From source file:org.springframework.data.solr.core.query.SimpleQueryTest.java

@Test
public void testAddFacetOptions() {
    FacetOptions facetOptions = new FacetOptions("field_1", "field_2");
    FacetQuery query = new SimpleFacetQuery().setFacetOptions(facetOptions);
    Assert.assertEquals(facetOptions, query.getFacetOptions());
}

From source file:org.springframework.data.solr.core.query.SimpleQueryTest.java

@Test
public void testAddFacetOptionsWithNullValue() {
    FacetQuery query = new SimpleFacetQuery().setFacetOptions(null);
    Assert.assertNull(query.getFacetOptions());
}

From source file:org.springframework.data.solr.core.QueryParser.java

private void appendFacetingOnFields(SolrQuery solrQuery, FacetQuery query) {
    FacetOptions facetOptions = query.getFacetOptions();
    if (facetOptions == null || !facetOptions.hasFields()) {
        return;/*w  ww  .j  a va 2  s. co  m*/
    }
    solrQuery.setFacet(true);
    solrQuery.addFacetField(convertFieldListToStringArray(facetOptions.getFacetOnFields()));
    solrQuery.setFacetMinCount(facetOptions.getFacetMinCount());
    solrQuery.setFacetLimit(facetOptions.getPageable().getPageSize());
    if (facetOptions.getPageable().getPageNumber() > 0) {
        solrQuery.set(FacetParams.FACET_OFFSET, facetOptions.getPageable().getOffset());
    }
    if (FacetOptions.FacetSort.INDEX.equals(facetOptions.getFacetSort())) {
        solrQuery.setFacetSort(FacetParams.FACET_SORT_INDEX);
    }
}

From source file:org.springframework.data.solr.core.ResultHelper.java

static Map<Field, Page<FacetFieldEntry>> convertFacetQueryResponseToFacetPageMap(FacetQuery query,
        QueryResponse response) {/*from w w  w.j a  v a2s .  c o  m*/
    Assert.notNull(query, "Cannot convert response for 'null', query");

    if (!hasFacets(query, response)) {
        return Collections.emptyMap();
    }
    Map<Field, Page<FacetFieldEntry>> facetResult = new HashMap<Field, Page<FacetFieldEntry>>();

    if (CollectionUtils.isNotEmpty(response.getFacetFields())) {
        int initalPageSize = query.getFacetOptions().getPageable().getPageSize();
        for (FacetField facetField : response.getFacetFields()) {
            if (facetField != null && StringUtils.hasText(facetField.getName())) {
                Field field = new SimpleField(facetField.getName());
                if (CollectionUtils.isNotEmpty(facetField.getValues())) {
                    List<FacetFieldEntry> pageEntries = new ArrayList<FacetFieldEntry>(initalPageSize);
                    for (Count count : facetField.getValues()) {
                        if (count != null) {
                            pageEntries
                                    .add(new SimpleFacetFieldEntry(field, count.getName(), count.getCount()));
                        }
                    }
                    facetResult.put(field, new SolrResultPage<FacetFieldEntry>(pageEntries,
                            query.getFacetOptions().getPageable(), facetField.getValueCount(), null));
                } else {
                    facetResult.put(field,
                            new SolrResultPage<FacetFieldEntry>(Collections.<FacetFieldEntry>emptyList(),
                                    query.getFacetOptions().getPageable(), 0, null));
                }
            }
        }
    }
    return facetResult;
}