Java SortExpression类使用实例

发布时间:2025-12-09 12:03:32 浏览次数:1

实例1: buildSortOptions

import com.google.appengine.api.search.SortExpression; //导入依赖的package包/类protected SortOptions.Builder buildSortOptions(List<OrderComponent> order) {    SortOptions.Builder sortOptions = SortOptions.newBuilder();    for (OrderComponent sort : order) {        String fieldName = getEncodedFieldName(sort.getField());        SortExpression.Builder expression = SortExpression.newBuilder().setExpression(fieldName);        expression = expression.setDirection(sort.isAscending() ? SortExpression.SortDirection.ASCENDING : SortExpression.SortDirection.DESCENDING);        IndexType indexType = metadata.getIndexType(sort.getField());        if (IndexType.SmallDecimal == indexType || IndexType.BigDecimal == indexType) {            expression = expression.setDefaultValueNumeric(sort.isDescending() ? IntLow : IntHigh);        } else if (IndexType.Date == indexType) {            expression = expression.setDefaultValueDate(sort.isDescending() ? DateLow : DateHigh);        } else {            expression = expression.setDefaultValue(sort.isDescending() ? StringLow : StringHigh);        }        sortOptions = sortOptions.addSortExpression(expression);    }    return sortOptions;} 

实例2: apply

import com.google.appengine.api.search.SortExpression; //导入依赖的package包/类@Overridepublic SortOptions apply(Query<?> query) {    SortOptions.Builder sortOptions = SortOptions.newBuilder();    query.getSort().ifPresent(sort -> {        for (Order order : sort) {            SearchFieldMetadata searchFieldMetadata = searchMetadata.getField(query.getResultType(), order.getProperty());            SortExpression.Builder expression = SortExpression.newBuilder()                    .setExpression(searchFieldMetadata.getEncodedName())                    .setDirection(order.getDirection().isAscending() ? ASCENDING : DESCENDING);            applyDefaultValue(order, searchFieldMetadata.getIndexType(), expression);            sortOptions.addSortExpression(expression.build());        }    });    return sortOptions.build();} 

实例3: applyDefaultValue

import com.google.appengine.api.search.SortExpression; //导入依赖的package包/类private void applyDefaultValue(Order order, IndexType indexType, SortExpression.Builder expression) {    if (indexType == NUMBER) {        expression.setDefaultValueNumeric(order.isAscending() ? MAXIMUM_NUMBER_VALUE : MINIMUM_NUMBER_VALUE);    } else if (indexType == DATE) {        expression.setDefaultValueDate(order.isAscending() ? MAXIMUM_DATE_VALUE : MINIMUM_DATE_VALUE);    } else {        expression.setDefaultValue(order.isAscending() ? HIGH_STRING_CHAR : "");    }} 

实例4: doSearch

import com.google.appengine.api.search.SortExpression; //导入依赖的package包/类private Results<ScoredDocument> doSearch() {  String indexName = SEARCH_INDEX;  // [START search_with_options]  try {    // Build the SortOptions with 2 sort keys    SortOptions sortOptions = SortOptions.newBuilder()        .addSortExpression(SortExpression.newBuilder()            .setExpression("price")            .setDirection(SortExpression.SortDirection.DESCENDING)            .setDefaultValueNumeric(0))        .addSortExpression(SortExpression.newBuilder()            .setExpression("brand")            .setDirection(SortExpression.SortDirection.DESCENDING)            .setDefaultValue(""))        .setLimit(1000)        .build();    // Build the QueryOptions    QueryOptions options = QueryOptions.newBuilder()        .setLimit(25)        .setFieldsToReturn("model", "price", "description")        .setSortOptions(sortOptions)        .build();    // A query string    String queryString = "product: coffee roaster AND price < 500";    //  Build the Query and run the search    Query query = Query.newBuilder().setOptions(options).build(queryString);    IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();    Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);    Results<ScoredDocument> result = index.search(query);    return result;  } catch (SearchException e) {    // handle exception...  }  // [END search_with_options]  return null;} 

实例5: testSortOptions

import com.google.appengine.api.search.SortExpression; //导入依赖的package包/类@Testpublic void testSortOptions() {    for (SortExpression.SortDirection direction : SortExpression.SortDirection.values()) {        SortExpression sortExpression = SortExpression.newBuilder()            .setExpression("numfield")            .setDirection(direction)            .setDefaultValueNumeric(9999)            .build();        SortOptions sortOptions = SortOptions.newBuilder()            .addSortExpression(sortExpression)            .build();        QueryOptions options = QueryOptions.newBuilder()            .setFieldsToReturn("numfield", "datefield")            .setSortOptions(sortOptions)            .build();        Query.Builder queryBuilder = Query.newBuilder().setOptions(options);        Results<ScoredDocument> results = index.search(queryBuilder.build(""));        double pre = -9999;        if (direction.equals(SortExpression.SortDirection.DESCENDING)) {            pre = 9999;        }        for (ScoredDocument doc : results) {            assertEquals(2, doc.getFieldNames().size());            for (Field numField : doc.getFields("numfield")) {                if (direction.equals(SortExpression.SortDirection.DESCENDING)) {                    assertTrue(pre > numField.getNumber());                } else {                    assertTrue(pre < numField.getNumber());                }                pre = numField.getNumber();            }        }    }} 
sortexpression
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477