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

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

Introduction

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

Prototype

public SolrQuery addSort(String field, ORDER order) 

Source Link

Document

Adds a single sort clause to the end of the current sort information.

Usage

From source file:com.comm.sr.common.solr.SolrQueryGenerator.java

@Override
public SolrQuery generateFinalQuery(SolrCommonQuery query_) {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("collection", query_.getCollectionName());
    SubQuery query = query_.getSubQuery();
    if (query == null) {
        return solrQuery;
    }/*from  w w  w .  ja v  a  2 s  .  c om*/
    StringBuffer solrQueryBuffer = new StringBuffer();
    makeFinalSolrQuery(query, solrQueryBuffer);

    int pageNum = query_.getPageNum();
    if (pageNum < 1) {
        // default first page
        pageNum = 1;
    } else {
        pageNum = query_.getPageNum();
    }
    List<SortItem> sortItems = query_.getSortItems();
    if (sortItems == null) {
        sortItems = Lists.newArrayList();
    }
    for (String functionQueryString : query_.getFunctionQuerysList()) {

        solrQueryBuffer.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND ");

    }
    if (solrQueryBuffer.toString().contains("AND")) {

        int and = solrQueryBuffer.lastIndexOf("AND");
        solrQueryBuffer.replace(and, and + 3, "");
    }
    if (solrQueryBuffer.toString().trim().length() == 0) {
        solrQueryBuffer.append("*:*");
    }
    for (SortItem sortItem : sortItems) {
        String fieldName = sortItem.getFieldName();
        String order = sortItem.getSort();

        if (order == null) {
            LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it.");
            continue;
        }
        if (order.trim().equals("asc")) {
            solrQuery.setSort(fieldName, SolrQuery.ORDER.asc);
        }
        if (order.trim().equals("desc")) {
            solrQuery.addSort(fieldName, SolrQuery.ORDER.desc);

        }

    }

    for (String fl : query_.getFls()) {
        solrQuery.addField(fl);

    }
    int pageSize = query_.getPageSize();
    solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize));
    solrQuery.add("rows", String.valueOf(pageSize));

    // if have distance query
    // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location
    String location = query_.getLocationPoint();
    Double distance = query_.getDistance();

    if (location != null && distance != null) {
        solrQuery.add("d", distance.toString());
        solrQuery.add("pt", location);
        solrQuery.add("sfield", "location");
        solrQuery.add("fq", "_query_:{!geofilt}");
        solrQuery.addSort("geodist()", SolrQuery.ORDER.asc);

    }
    LOGGER.info(solrQueryBuffer.toString());
    solrQuery.setQuery(solrQueryBuffer.toString());

    return solrQuery;
}

From source file:com.comm.sr.service.solr.SolrQueryGenerator.java

@Override
public SolrQuery generateFinalQuery(CommonQuery query) {
    SolrQuery solrQuery = new SolrQuery();
    StringBuilder queryStr = new StringBuilder();
    StringBuilder filterQueryStr = new StringBuilder();

    int pageNum = query.getPageNum();
    if (pageNum < 1) {
        // default first page
        pageNum = 1;/*w  ww.j  av  a2s .c o m*/
    } else {
        pageNum = query.getPageNum();
    }
    List<QueryItem> queryItems = query.getQueryItems();
    if (queryItems == null) {
        queryItems = Lists.newArrayList();
    }

    List<SortItem> sortItems = query.getSortItems();
    if (sortItems == null) {
        sortItems = Lists.newArrayList();
    }
    for (QueryItem queryItem : queryItems) {
        if (queryItem.isIsFilterType()) {
            String temp = generateQueryStrFromQueryItem(queryItem);
            if (temp != null) {
                filterQueryStr.append(temp + " AND ");

            }
        }
        if (!queryItem.isIsFilterType()) {
            String temp = generateQueryStrFromQueryItem(queryItem);
            if (temp != null) {
                queryStr.append(temp + " AND ");

            }
        }

    }

    for (String functionQueryString : query.getFunctionQuerysList()) {

        queryStr.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND ");

    }
    // check if final queryStr is empty
    if (queryStr.toString().trim().length() == 0) {
        queryStr.append("*:*");
    }

    // delete last AND
    if (queryStr.toString().contains("AND")) {

        int and = queryStr.lastIndexOf("AND");
        queryStr.replace(and, and + 3, "");
    }
    if (filterQueryStr.toString().contains("AND")) {
        int and = filterQueryStr.lastIndexOf("AND");
        filterQueryStr.replace(and, and + 3, "");
    }
    for (SortItem sortItem : sortItems) {
        String fieldName = sortItem.getFieldName();
        String order = sortItem.getSort();

        if (order == null) {
            LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it.");
            continue;
        }
        if (order.trim().equals("asc")) {
            solrQuery.setSort(fieldName, SolrQuery.ORDER.asc);
        }
        if (order.trim().equals("desc")) {
            solrQuery.addSort(fieldName, SolrQuery.ORDER.desc);

        }

    }

    solrQuery.setQuery(queryStr.toString());
    if (filterQueryStr.toString().length() != 0) {
        solrQuery.setFilterQueries(filterQueryStr.toString());

    }

    LOGGER.debug("final queryStr is:" + queryStr.toString() + "");
    LOGGER.debug("filter queryStr is:" + filterQueryStr.toString() + "");
    // //only response userID,score
    // solrQuery.setFields("userID","score");
    for (String fl : query.getFls()) {
        solrQuery.addField(fl);

    }
    int pageSize = query.getPageSize();
    solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize));
    solrQuery.add("rows", String.valueOf(pageSize));
    // if have distance query
    // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location
    String location = query.getLocationPoint();
    Double distance = query.getDistance();

    if (location != null && distance != null) {
        solrQuery.add("d", distance.toString());
        solrQuery.add("pt", location);
        solrQuery.add("sfield", "location");
        solrQuery.add("fq", "_query_:{!geofilt}");
        solrQuery.addSort("geodist()", SolrQuery.ORDER.asc);

    }

    return solrQuery;
}

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

License:Apache License

/**
 * Append sorting parameters to//from  w  w  w.j  a v a2s.com
 * {@link org.apache.solr.client.solrj.SolrQuery}
 * 
 * @param solrQuery
 * @param sort
 */
protected void appendSort(SolrQuery solrQuery, Sort sort) {
    if (sort == null) {
        return;
    }

    for (Order order : sort) {
        solrQuery.addSort(order.getProperty(), order.isAscending() ? ORDER.asc : ORDER.desc);
    }
}

From source file:com.hurence.logisland.service.solr.api.SolrClientService.java

License:Apache License

@Override
public void copyCollection(String reindexScrollTimeout, String src, String dst)
        throws DatastoreClientServiceException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setRows(1000);/*from   ww  w  . j a  v  a  2  s  .  com*/
    solrQuery.setQuery("*:*");
    solrQuery.addSort("id", SolrQuery.ORDER.asc); // Pay attention to this line
    String cursorMark = CursorMarkParams.CURSOR_MARK_START;
    boolean done = false;
    QueryResponse response;
    try {
        do {
            solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark);
            response = getClient().query(src, solrQuery);
            List<SolrInputDocument> documents = new ArrayList<>();
            for (SolrDocument document : response.getResults()) {
                SolrInputDocument inputDocument = getConverter().toSolrInputDocument(document);
                inputDocument.removeField("_version_");
                documents.add(inputDocument);
            }

            getClient().add(dst, documents);

        } while (cursorMark.equals(response.getNextCursorMark()));

        getClient().commit(dst);
    } catch (Exception e) {
        throw new DatastoreClientServiceException(e);
    }
}

From source file:com.mmj.app.lucene.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

public static SolrQuery createSuggestQuery(SuggestQuery query) {
    SolrQuery solrQuery = new SolrQuery();
    StringBuilder sb = new StringBuilder();
    sb.append("suggest:").append(query.getPrefix()).append("*");
    solrQuery.setQuery(sb.toString());//w  ww  . j  a v a 2 s. com
    solrQuery.addField(query.getField());
    if (StringUtils.isNotEmpty(query.getSortFiled())) {
        solrQuery.addSort(query.getSortFiled(), SolrQuery.ORDER.desc);
    }
    solrQuery.setStart(0);
    solrQuery.setRows(100);
    return solrQuery;
}

From source file:com.mmj.app.lucene.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

protected static SolrQuery createSearchQuery(List<String> params, List<String> fiters, SearchQuery searchQuery,
        String... searchHandler) {
    SolrQuery solrQuery = new SolrQuery();
    String query = null;/*from   w w  w .j  a  va 2 s.c  o m*/
    if (Argument.isEmpty(params)) {
        query = ("*:*");
    } else {
        query = StringUtils.join(params, " AND ");
        if (!StringUtils.join(params.toArray()).contains("*")) {
            if (Argument.isNotEmptyArray(searchHandler)) {
                solrQuery.setRequestHandler(
                        StringUtils.isEmpty(searchHandler[0]) ? "/select" : searchHandler[0]);
            }

        }
    }
    if (Argument.isNotEmpty(fiters)) {
        solrQuery.setFilterQueries(StringUtils.join(fiters, " AND "));
    }
    solrQuery.setQuery(query);
    solrQuery.setStart(searchQuery.getStart());
    solrQuery.setRows(searchQuery.getRows());
    if (StringUtils.isNotBlank(searchQuery.getSortFiled())) {
        solrQuery.addSort(searchQuery.getSortFiled(), searchQuery.getOrderBy());
    }
    return solrQuery;
}

From source file:com.ms.scombiz.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

protected static SolrQuery setQuery(List<String> params, SearchQuery searchQuery) {
    SolrQuery solrQuery = new SolrQuery();
    String query = null;/*  w  w w. j  a  va2  s  .  c  om*/
    if (params.isEmpty()) {
        query = ("*:*");
    } else {
        query = StringUtils.join(params, " AND ");
    }
    solrQuery.setQuery(query);
    solrQuery.setStart(searchQuery.getStart());
    solrQuery.setRows(searchQuery.getRows());
    if (StringUtils.isNotBlank(searchQuery.getSortFiled())) {
        solrQuery.addSort(searchQuery.getSortFiled(), searchQuery.getOrderBy());
    }
    return solrQuery;
}

From source file:com.zb.app.external.lucene.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

public static SolrQuery createSuggestQuery(SuggestQuery query) {
    SolrQuery solrQuery = new SolrQuery();
    StringBuilder sb = new StringBuilder();
    sb.append("suggest:").append(query.getPrefix()).append("*");
    solrQuery.setQuery(sb.toString());//from   w w w  .j  av  a 2 s  .  c o  m
    solrQuery.addField(query.getField());
    if (StringUtils.isNotEmpty(query.getSortFiled())) {
        solrQuery.addSort(query.getSortFiled(), SolrQuery.ORDER.desc);
    }
    solrQuery.setStart(0);
    solrQuery.setRows(100);

    // solrQuery.set("qt", "/terms");
    // solrQuery.setFacet(true);
    // solrQuery.setFacetMinCount(1);
    // solrQuery.setFacetLimit(10);
    // solrQuery.setFacetPrefix(query.getField(), query.getPrefix());
    // solrQuery.setFacetSort(query.getSortFiled());
    // solrQuery.setRows(0);
    // solrQuery.setQuery("*");

    // solrQuery.setTerms(true);
    // solrQuery.setTermsLimit(10);
    // solrQuery.setTermsMinCount(1);
    // solrQuery.setTermsPrefix(query.getPrefix());
    // solrQuery.setTermsRegexFlag(query.getField());
    // solrQuery.setTermsSortString(query.getSortFiled());
    return solrQuery;
}

From source file:com.zb.app.external.lucene.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

protected static SolrQuery createSearchQuery(List<String> params, List<String> fiters,
        SearchQuery searchQuery) {/*from   ww w .  ja v  a  2s. c om*/
    SolrQuery solrQuery = new SolrQuery();
    String query = null;
    if (Argument.isEmpty(params)) {
        query = ("*:*");
    } else {
        query = StringUtils.join(params, " AND ");
        if (!StringUtils.join(params.toArray()).contains("*")) {
            solrQuery.setRequestHandler("/browse");
        }
    }
    if (Argument.isNotEmpty(fiters)) {
        solrQuery.setFilterQueries(StringUtils.join(fiters, " AND "));
    }
    solrQuery.setQuery(query);
    solrQuery.setStart(searchQuery.getStart());
    solrQuery.setRows(searchQuery.getRows());
    if (StringUtils.isNotBlank(searchQuery.getSortFiled())) {
        solrQuery.addSort(searchQuery.getSortFiled(), searchQuery.getOrderBy());
    }
    return solrQuery;
}

From source file:cz.incad.kramerius.k5indexer.Server.java

public SolrDocumentList getDocs(String query) throws SolrServerException {
    SolrQuery squery = new SolrQuery();
    squery.setQuery(query);/* ww  w  . j a  v  a  2 s  . c  o  m*/
    squery.addSort("price", SolrQuery.ORDER.asc);
    QueryResponse rsp = server.query(squery);
    return rsp.getResults();
}