Sets the cursor. The cursor is obtained from either a
Results or one of the individual
ScoredDocuments.
This is illustrated from the following code fragment:
Cursorcursor=Cursor.newBuilder().build();SearchResultsresults=index.search(Query.newBuilder().setOptions(QueryOptions.newBuilder().setLimit(20).setCursor(cursor).build()).build("some query"));// If the Cursor is built without setPerResult(true), then// by default a single Cursor is returned with the// Results.cursor=results.getCursor();for(ScoredDocumentresult:results){// If you set Cursor.newBuilder().setPerResult(true)// then a cursor is returned with each result.result.getCursor();}
use a cursor returned from a
previous set of search results as a starting point to retrieve
the next set of results. This can get you better performance, and
also improves the consistency of pagination through index updates
Sets the accuracy requirement for
Results#getNumberFound(). If set,
getNumberFound() will be accurate up to at least that number.
For example, when set to 100, any getNumberFound() <= 100 is
accurate. This option may add considerable latency / expense, especially
when used with Builder#setFieldsToReturn(String...).
Sets whether or not the search should return documents or document IDs only.
This setting is incompatible with
#addExpressionToReturn(FieldExpression) and with
#setFieldsToReturn(String...) methods.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003e\u003ccode\u003eQueryOptions.Builder\u003c/code\u003e is used to construct \u003ccode\u003eQueryOptions\u003c/code\u003e objects for search queries.\u003c/p\u003e\n"],["\u003cp\u003eYou can add \u003ccode\u003eFieldExpression\u003c/code\u003e objects or \u003ccode\u003eFieldExpression.Builder\u003c/code\u003e objects to the builder to compute and return named expressions in search results.\u003c/p\u003e\n"],["\u003cp\u003eThe builder allows setting a \u003ccode\u003eCursor\u003c/code\u003e to retrieve subsequent sets of results from a search query, improving performance and pagination consistency.\u003c/p\u003e\n"],["\u003cp\u003eYou can specify which fields to return in search results, and designate which ones should be used to generate snippets, with the snippets being returned in \u003ccode\u003eScoredDocument#getExpressions()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe builder provides methods to set the limit and offset for returned documents, define accuracy requirements for the number of found results, choose whether to return document IDs only, and implement sorting via \u003ccode\u003eSortOptions\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Class QueryOptions.Builder (2.0.0)\n\n public static final class QueryOptions.Builder\n\nA builder which constructs QueryOptions objects. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e QueryOptions.Builder \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nMethods\n-------\n\n### addExpressionToReturn(FieldExpression expression)\n\n public QueryOptions.Builder addExpressionToReturn(FieldExpression expression)\n\nAdds a [FieldExpression](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.FieldExpression) to return in search results.\n\n### addExpressionToReturn(FieldExpression.Builder expressionBuilder)\n\n public QueryOptions.Builder addExpressionToReturn(FieldExpression.Builder expressionBuilder)\n\nAdds a [FieldExpression](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.FieldExpression) build from the given\n`expressionBuilder` to return in search results. Snippets will be\nreturned as fields with the same names in\n[ScoredDocument#getExpressions()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.ScoredDocument#com_google_appengine_api_search_ScoredDocument_getExpressions__).\n\n### build()\n\n public QueryOptions build()\n\nConstruct the final message.\n\n### clearNumberFoundAccuracy()\n\n public QueryOptions.Builder clearNumberFoundAccuracy()\n\nClears any accuracy requirement for [Results#getNumberFound()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Results#com_google_appengine_api_search_Results_getNumberFound__).\n\n### setCursor(Cursor cursor)\n\n public QueryOptions.Builder setCursor(Cursor cursor)\n\nSets the cursor. The cursor is obtained from either a\n[Results](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Results) or one of the individual\n[ScoredDocuments](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.ScoredDocument).\n\nThis is illustrated from the following code fragment:\n\n\n\n Cursor cursor = Cursor.newBuilder().build();\n\n SearchResults results = index.search(\n Query.newBuilder()\n .setOptions(QueryOptions.newBuilder()\n .setLimit(20)\n .setCursor(cursor)\n .build())\n .build(\"some query\"));\n\n // If the Cursor is built without setPerResult(true), then\n // by default a single /appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Cursor is returned with the\n // /appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Results.\n cursor = results.getCursor();\n\n for (ScoredDocument result : results) {\n // If you set Cursor.newBuilder().setPerResult(true)\n // then a cursor is returned with each result.\n result.getCursor();\n }\n\n### setCursor(Cursor.Builder cursorBuilder)\n\n public QueryOptions.Builder setCursor(Cursor.Builder cursorBuilder)\n\nSets a cursor built from the builder.\nSee Also: [#setCursor(Cursor)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.QueryOptions.Builder#com_google_appengine_api_search_QueryOptions_Builder_setCursor_com_google_appengine_api_search_Cursor_)\n\n### setFieldsToReturn(String\\[\\] fields)\n\n public QueryOptions.Builder setFieldsToReturn(String[] fields)\n\nSpecifies one or more fields to return in results.\n\n### setFieldsToSnippet(String\\[\\] fieldsToSnippet)\n\n public QueryOptions.Builder setFieldsToSnippet(String[] fieldsToSnippet)\n\nSpecifies one or more fields to snippet in results. Snippets will be\nreturned as fields with the same names in\n[ScoredDocument#getExpressions()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.ScoredDocument#com_google_appengine_api_search_ScoredDocument_getExpressions__).\n\n### setLimit(int limit)\n\n public QueryOptions.Builder setLimit(int limit)\n\nSets the limit on the number of documents to return in [Results](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Results).\n\n### setNumberFoundAccuracy(int numberFoundAccuracy)\n\n public QueryOptions.Builder setNumberFoundAccuracy(int numberFoundAccuracy)\n\nSets the accuracy requirement for\n[Results#getNumberFound()](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.Results#com_google_appengine_api_search_Results_getNumberFound__). If set,\n`getNumberFound()` will be accurate up to at least that number.\nFor example, when set to 100, any `getNumberFound() \u003c= 100` is\naccurate. This option may add considerable latency / expense, especially\nwhen used with Builder#setFieldsToReturn(String...).\n\n### setOffset(int offset)\n\n public QueryOptions.Builder setOffset(int offset)\n\nSets the offset of the first result to return.\n\n### setReturningIdsOnly(boolean idsOnly)\n\n public QueryOptions.Builder setReturningIdsOnly(boolean idsOnly)\n\nSets whether or not the search should return documents or document IDs only.\nThis setting is incompatible with\n[#addExpressionToReturn(FieldExpression)](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.QueryOptions.Builder#com_google_appengine_api_search_QueryOptions_Builder_addExpressionToReturn_com_google_appengine_api_search_FieldExpression_) and with\n#setFieldsToReturn(String...) methods.\n\n### setSortOptions(SortOptions sortOptions)\n\n public QueryOptions.Builder setSortOptions(SortOptions sortOptions)\n\nSets a [SortOptions](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.SortOptions) to sort documents with.\n\n### setSortOptions(SortOptions.Builder builder)\n\n public QueryOptions.Builder setSortOptions(SortOptions.Builder builder)\n\nSets a [SortOptions](/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.search.SortOptions) using a builder."]]