Example usage for org.apache.solr.common.params GroupParams GROUP_FUNC

List of usage examples for org.apache.solr.common.params GroupParams GROUP_FUNC

Introduction

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

Prototype

String GROUP_FUNC

To view the source code for org.apache.solr.common.params GroupParams GROUP_FUNC.

Click Source Link

Usage

From source file:com.frank.search.solr.core.DefaultQueryParser.java

License:Apache License

private void processGroupOptions(SolrQuery solrQuery, Query query) {

    GroupOptions groupOptions = query.getGroupOptions();

    if (groupOptions == null || (CollectionUtils.isEmpty(groupOptions.getGroupByFields())
            && CollectionUtils.isEmpty(groupOptions.getGroupByFunctions())
            && CollectionUtils.isEmpty(groupOptions.getGroupByQueries()))) {
        return;/*from w w  w .j av  a2  s  .  c om*/
    }

    solrQuery.set(GroupParams.GROUP, true);
    solrQuery.set(GroupParams.GROUP_MAIN, groupOptions.isGroupMain());
    solrQuery.set(GroupParams.GROUP_FORMAT, "grouped");

    if (!CollectionUtils.isEmpty(groupOptions.getGroupByFields())) {
        for (Field field : groupOptions.getGroupByFields()) {
            solrQuery.add(GroupParams.GROUP_FIELD, field.getName());
        }
    }

    if (!CollectionUtils.isEmpty(groupOptions.getGroupByFunctions())) {
        for (Function function : groupOptions.getGroupByFunctions()) {
            String functionFragment = createFunctionFragment(function, 0);
            setObjectNameOnGroupQuery(query, function, functionFragment);
            solrQuery.add(GroupParams.GROUP_FUNC, functionFragment);
        }
    }

    if (!CollectionUtils.isEmpty(groupOptions.getGroupByQueries())) {
        for (Query groupQuery : groupOptions.getGroupByQueries()) {
            String queryFragment = getQueryString(groupQuery);
            setObjectNameOnGroupQuery(query, groupQuery, queryFragment);
            solrQuery.add(GroupParams.GROUP_QUERY, queryFragment);
        }
    }

    if (groupOptions.getSort() != null) {

        for (Order order : groupOptions.getSort()) {
            solrQuery.add(GroupParams.GROUP_SORT,
                    order.getProperty().trim() + " " + (order.isAscending() ? ORDER.asc : ORDER.desc));
        }
    }

    if (groupOptions.getCachePercent() > 0) {
        solrQuery.add(GroupParams.GROUP_CACHE_PERCENTAGE, String.valueOf(groupOptions.getCachePercent()));
    }

    if (groupOptions.getLimit() != null && groupOptions.getLimit() >= 0) {
        solrQuery.set(GroupParams.GROUP_LIMIT, groupOptions.getLimit());
    }

    if (groupOptions.getOffset() != null && groupOptions.getOffset() >= 0) {
        solrQuery.set(GroupParams.GROUP_OFFSET, groupOptions.getOffset());
    }

    solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, groupOptions.isTotalCount());
    solrQuery.set(GroupParams.GROUP_FACET, groupOptions.isGroupFacets());
    solrQuery.set(GroupParams.GROUP_TRUNCATE, groupOptions.isTruncateFacets());
}

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

License:Apache License

/**
 * @see DATASOLR-121/*  w  ww  . j  a  v  a 2  s. co  m*/
 */
@Test
public void testConstructGroupQueryWithAllPossibleParameters() {
    GroupOptions groupOptions = new GroupOptions();

    SimpleQuery query = new SimpleQuery();
    query.addCriteria(new SimpleStringCriteria("*:*"));
    query.setGroupOptions(groupOptions);
    groupOptions.setOffset(1);
    groupOptions.setLimit(2);
    groupOptions.addGroupByField("field_1");
    groupOptions.addGroupByFunction(MaxFunction.max("field_1", "field_2"));
    groupOptions.addGroupByQuery(new SimpleQuery("*:*"));
    groupOptions.addSort(new Sort(Sort.Direction.DESC, "field_3"));
    groupOptions.setTotalCount(true);

    SolrQuery solrQuery = queryParser.constructSolrQuery(query);

    assertGroupFormatPresent(solrQuery, true);
    Assert.assertEquals("field_1", solrQuery.get(GroupParams.GROUP_FIELD));
    Assert.assertEquals("{!func}max(field_1,field_2)", solrQuery.get(GroupParams.GROUP_FUNC));
    Assert.assertEquals("*:*", solrQuery.get(GroupParams.GROUP_QUERY));
    Assert.assertEquals("field_3 desc", solrQuery.get(GroupParams.GROUP_SORT));
    Assert.assertEquals("1", solrQuery.get(GroupParams.GROUP_OFFSET));
    Assert.assertEquals("2", solrQuery.get(GroupParams.GROUP_LIMIT));
}

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

License:Apache License

/**
 * @see DATASOLR-121//from  w w w .j av  a2s  . com
 */
@Test
public void testConstructGroupQueryWithMultipleFunctions() {
    SimpleQuery query = new SimpleQuery();
    query.addCriteria(new SimpleStringCriteria("*:*"));
    query.setGroupOptions(new GroupOptions());
    query.getGroupOptions().addGroupByFunction(MaxFunction.max("field_1", "field_2"));
    query.getGroupOptions().addGroupByFunction(MaxFunction.max("field_3", "field_4"));

    SolrQuery solrQuery = queryParser.constructSolrQuery(query);

    assertGroupFormatPresent(solrQuery, false);
    Assert.assertArrayEquals(new String[] { "{!func}max(field_1,field_2)", "{!func}max(field_3,field_4)" },
            solrQuery.getParams(GroupParams.GROUP_FUNC));
    Assert.assertNull(solrQuery.getParams(GroupParams.GROUP_QUERY));
    Assert.assertNull(solrQuery.getParams(GroupParams.GROUP_FIELD));
}

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

License:Apache License

/**
 * @see DATASOLR-121//  ww w . ja  v  a  2 s.  co  m
 */
@Test
public void testConstructGroupQueryWithMultipleQueries() {
    SimpleQuery query = new SimpleQuery();
    query.addCriteria(new SimpleStringCriteria("*:*"));
    query.setGroupOptions(new GroupOptions());
    query.getGroupOptions().addGroupByQuery(new SimpleQuery("query1"));
    query.getGroupOptions().addGroupByQuery(new SimpleQuery("query2"));

    SolrQuery solrQuery = queryParser.constructSolrQuery(query);

    assertGroupFormatPresent(solrQuery, false);
    Assert.assertArrayEquals(new String[] { "query1", "query2" }, solrQuery.getParams(GroupParams.GROUP_QUERY));
    Assert.assertNull(solrQuery.getParams(GroupParams.GROUP_FUNC));
    Assert.assertNull(solrQuery.getParams(GroupParams.GROUP_FIELD));
}