Obtaining query results for components

When developing a component, use the QueryState and QueryResults classes to request and receive data from data sets.

To specify the types of results the component needs, you must add the relevant QueryConfigs to the QueryState. For example:
QueryState query = getDataSource(request).getQueryState();
CollectionBaseView defaultBaseView = EndecaPortletUtil.getDefaultCollection(request);
query.addFunction(new NavConfig(), defaultBaseView, request.getLocale());
QueryResults results = getDataSource(request).execute(query);
You can then get the underlying Conversation Service API results in order to obtain the data required by your component.
Results discoveryResults = results.getDiscoveryServiceResults();
Before executing the query, you can also make other local modifications to your query state by adding filters or configurations to your query. For example:
String viewKey = request.getParameter(VIEW_KEY_PARAM);
DataSource ds = getDataSource(request);
QueryState query = ds.getQueryState();
SemanticView sView = ds.getCollectionOrSemanticView(viewKey, request.getLocale());
query.addFunction(new ResultsConfig(), sView, request.getLocale());
ExpressionBase expression = getDataSource(request).parseLQLExpression("Region = 'Midwest'");
query.addFunction(new SelectionFilter(expression), sView, request.getLocale());
QueryResults results = getDataSource(request).execute(query);
To persist QueryState changes to the user's session, which also updates the associated components, use setQueryState. For example:
String viewKey = request.getParameter(VIEW_KEY_PARAM);
DataSource ds = getDataSource(request);
QueryState query = ds.getQueryState();
SemanticView sView = ds.getCollectionOrSemanticView(viewKey, request.getLocale());
query.addFunction(new ResultsConfig(), sView, request.getLocale());
ExpressionBase expression = getDataSource(request).parseLQLExpression("Region = 'Midwest'");
query.addFunction(new SelectionFilter(expression), sView, request.getLocale());
ds.setQueryState(query);

For details on the QueryConfig and QueryFunction classes, see Working with QueryFunction Classes, and the Component SDK API Reference.