Example usage for org.apache.solr.search SortSpec setOffset

List of usage examples for org.apache.solr.search SortSpec setOffset

Introduction

In this page you can find the example usage for org.apache.solr.search SortSpec setOffset.

Prototype

public void setOffset(int offset) 

Source Link

Usage

From source file:org.alfresco.solr.query.AbstractQParser.java

License:Open Source License

@Override
public SortSpec getSortSpec(boolean useGlobalParams) throws SyntaxError {

    getQuery(); // ensure query is parsed first

    String sortStr = null;/*from ww  w  .j av  a 2s. c o m*/
    String startS = null;
    String rowsS = null;

    if (localParams != null) {
        sortStr = localParams.get(CommonParams.SORT);
        startS = localParams.get(CommonParams.START);
        rowsS = localParams.get(CommonParams.ROWS);

        // if any of these parameters are present, don't go back to the global params
        if (sortStr != null || startS != null || rowsS != null) {
            useGlobalParams = false;
        }
    }

    if (useGlobalParams) {
        if (sortStr == null) {
            sortStr = params.get(CommonParams.SORT);
        }
        if (startS == null) {
            startS = params.get(CommonParams.START);
        }
        if (rowsS == null) {
            rowsS = params.get(CommonParams.ROWS);
        }
    }

    int start = startS != null ? Integer.parseInt(startS) : 0;
    int rows = rowsS != null ? Integer.parseInt(rowsS) : 10;

    // Fix sort fields here
    if (sortStr != null) {
        StringBuilder builder = new StringBuilder();
        StringBuilder propertyBuilder = null;
        char c;
        for (int i = 0; i < sortStr.length(); i++) {
            c = sortStr.charAt(i);
            if (propertyBuilder == null) {
                if (!Character.isWhitespace(c) && (c != ',')) {
                    propertyBuilder = new StringBuilder();
                    propertyBuilder.append(c);
                } else {
                    builder.append(c);
                }
            } else {
                if (Character.isWhitespace(c) || (c == ',')) {
                    String toAppend = AlfrescoSolrDataModel.getInstance()
                            .mapProperty(propertyBuilder.toString(), FieldUse.SORT, getReq());
                    builder.append(toAppend);
                    builder.append(c);
                    propertyBuilder = null;
                } else {
                    propertyBuilder.append(c);
                }
            }
        }
        if (propertyBuilder != null) {
            String toAppend = AlfrescoSolrDataModel.getInstance().mapProperty(propertyBuilder.toString(),
                    FieldUse.SORT, getReq());
            builder.append(toAppend);
        }
        sortStr = builder.toString();
    }

    if (sortStr != null) {
        sortStr = sortStr.replaceAll("^ID(\\s)", "id$1");
        sortStr = sortStr.replaceAll("(\\s)ID(\\s)", "$1id$2");
    }
    SortSpec sort = SortSpecParsing.parseSortSpec(sortStr, req);

    sort.setOffset(start);
    sort.setCount(rows);
    return sort;
}