使用 GAE 搜索限制结果 API
Result limiting with GAE Search API
这个搜索代码让我很烦,
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
returned 是 20 项,而 QueryOptions
中明确限制为 10。
这段代码可能有什么问题?
另一件事是查询结果不会发出游标,而很明显(通过手动检查)查询应该 return 超过 20 个项目,并且应该 return a光标?或者这是正确的行为吗?
好吧,据我从您的代码中得知,您的 queryOptions 仅在您传入非空游标时才使用。所以,如果您还没有光标,您也不会得到一个。在
之后添加右括号
Cursor cursor = Cursor.newBuilder().build(webSafeCursor);
而且我认为你会得到你想要的行为(当然是在其他地方平衡大括号之后)。
这个搜索代码让我很烦,
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
returned 是 20 项,而 QueryOptions
中明确限制为 10。
这段代码可能有什么问题?
另一件事是查询结果不会发出游标,而很明显(通过手动检查)查询应该 return 超过 20 个项目,并且应该 return a光标?或者这是正确的行为吗?
好吧,据我从您的代码中得知,您的 queryOptions 仅在您传入非空游标时才使用。所以,如果您还没有光标,您也不会得到一个。在
之后添加右括号Cursor cursor = Cursor.newBuilder().build(webSafeCursor);
而且我认为你会得到你想要的行为(当然是在其他地方平衡大括号之后)。