Example usage for com.amazonaws.services.cloudsearchdomain.model SearchRequest setSize

List of usage examples for com.amazonaws.services.cloudsearchdomain.model SearchRequest setSize

Introduction

In this page you can find the example usage for com.amazonaws.services.cloudsearchdomain.model SearchRequest setSize.

Prototype


public void setSize(Long size) 

Source Link

Document

Specifies the maximum number of search hits to include in the response.

Usage

From source file:com.clicktravel.infrastructure.persistence.aws.cloudsearch.CloudSearchEngine.java

License:Apache License

@Override
public <T extends Document> DocumentSearchResponse<T> search(final Query query, final Integer start,
        final Integer size, final Class<T> documentClass, final SearchOptions options) {

    if (options == null) {
        throw new IllegalArgumentException("SearchOptions cannot be null");
    }/*from ww  w  .jav a2s.c  om*/

    try {
        final DocumentConfiguration documentConfiguration = getDocumentConfiguration(documentClass);
        final SearchRequest searchRequest = getSearchRequest(query);
        searchRequest.setStart((long) start);
        searchRequest.setSize((long) size);

        if (!options.getExpressions().isEmpty()) {
            searchRequest.setExpr(new JSONObject(options.getExpressions()).toString());
        }

        if (options.getSortOrder() != SortOrder.DEFAULT) {
            final StringBuilder sort = new StringBuilder();
            String direction = null;
            int count = 0;
            for (final SortingOption sortingOption : options.getSortOrder().sortingOptions()) {
                count++;
                sort.append(sortingOption.key() + " ");
                switch (sortingOption.direction()) {
                case ASCENDING:
                default:
                    direction = "asc";
                    break;
                case DESCENDING:
                    direction = "desc";
                    break;
                }
                sort.append(direction);
                if (count < options.getSortOrder().sortingOptions().size()) {
                    sort.append(", ");
                }
            }
            searchRequest.setSort(sort.toString());
        }

        final String searchDomain = documentConfigurationHolder.schemaName() + "-"
                + documentConfiguration.namespace();
        final SearchResult searchResult = getSearchServiceClient(searchDomain).search(searchRequest);
        final List<T> documents = new ArrayList<>();
        for (final Hit hit : searchResult.getHits().getHit()) {
            try {
                documents.add(getDocument(hit, documentClass, documentConfiguration.properties()));
            } catch (final Exception e) {
                throw new IllegalStateException("Could not create Document from CloudSearch response: " + hit,
                        e);
            }
        }
        final long totalResults = searchResult.getHits().getFound();
        final String cursor = searchResult.getHits().getCursor();
        return new DocumentSearchResponse<T>((int) totalResults, cursor, documents);
    } catch (final AmazonServiceException e) {
        throw new PersistenceResourceFailureException("Unable to perform CloudSearch query", e);
    }
}