使用GAE Search API限制结果

时间:2015-01-30 15:13:49

标签: java google-app-engine search full-text-search gae-search

我的搜索代码非常烦人,

if(webSafeCursor != null && !webSafeCursor.isEmpty()){
    Cursor cursor = Cursor.newBuilder().build(webSafeCursor);
    QueryOptions options = QueryOptions.newBuilder()
                           .setLimit(10)
                           .setFieldsToSnippet("content")
                           .setCursor(cursor)
                           .build();
    query = Query.newBuilder()
            .setOptions(options)
            .build(queryString);
    }

    Results<ScoredDocument> results = null;

    if(query != null){
        results = index.search(query);
    } else {
               results = index.search(queryString);
           }
    results.getCursor(); // NULL!
}

这里的问题是,results返回的是20个项目,而QueryOptions中的限制是10个。

此代码可能有什么问题?

另一件事是查询结果不发出Cursor,而很清楚(通过手动检查)查询应该返回超过20个项目,那应该返回一个Cursor?或者这是正确的行为吗?

1 个答案:

答案 0 :(得分:2)

好吧,据我所知,你的代码中只有在传入非空游标时才使用queryOptions。所以,如果你还没有光标,你也不会得到光标。

之后添加一个右大括号
Cursor cursor = Cursor.newBuilder().build(webSafeCursor);

我觉得你会得到你想要的行为(当然,在平衡其他地方的大括号之后)。