private static Comparator<SearchResult> sorted(final List<SortField> fields) { return (o1, o2) -> { ComparisonChain chain = ComparisonChain.start(); for(SortField field : fields) { Comparable f1 = (Comparable) o1.getSource().get(field.getField()); Comparable f2 = (Comparable) o2.getSource().get(field.getField()); chain = chain.compare(f1, f2, new ComparableComparator(field.getSortOrder())); } return chain.result(); }; }
protected SolrQuery buildSearchRequest( SearchRequest searchRequest, String fieldList) throws IOException, SolrServerException { SolrQuery query = new SolrQuery() .setStart(searchRequest.getFrom()) .setRows(searchRequest.getSize()) .setQuery(searchRequest.getQuery()); // handle sort fields for (SortField sortField : searchRequest.getSort()) { query.addSort(sortField.getField(), getSolrSortOrder(sortField.getSortOrder())); } // handle search fields List<String> fields = searchRequest.getFields(); if (fieldList == null) { fieldList = "*"; if (fields != null) { fieldList = StringUtils.join(fields, ","); } } query.set("fl", fieldList); //handle facet fields List<String> facetFields = searchRequest.getFacetFields(); if (facetFields != null) { facetFields.forEach(query::addFacetField); } query.set("collection", getCollections(searchRequest.getIndices())); return query; }
org.elasticsearch.search.sort.SortOrder sortOrder = getElasticsearchSortOrder(sortField.getSortOrder()); String missingSortOrder; if(sortOrder == org.elasticsearch.search.sort.SortOrder.DESC) {