カスタム・コンポーネントに対する問合せ結果の取得

カスタム・コンポーネントを開発する場合、QueryStateクラスおよびQueryResultsクラスを使用して、Endeca Serverに対してリクエストを発行して結果を取得します。

コンポーネントで必要な結果のタイプを指定するには、関連するQueryConfigsQueryStateに追加する必要があります。次に例を示します。
QueryState query = getDataSource(request).getQueryState();
CollectionBaseView defaultBaseView = EndecaPortletUtil.getDefaultCollection(request);
query.addFunction(new NavConfig(), defaultBaseView, request.getLocale());
QueryResults results = getDataSource(request).execute(query);
その後、コンポーネントで必要なデータを取得するために、基礎となる会話サービスAPIの結果を取得できます。
Results discoveryResults = results.getDiscoveryServiceResults();
問合せの実行前に、問合せにフィルタまたは構成を追加することで、問合せ状態に他のローカル変更を加えることもできます。次に例を示します。
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);
ユーザー・セッションへのQueryStateの変更を永続的にする(関連するコンポーネントも更新)には、setQueryStateを使用します。次に例を示します。
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);

QueryConfigクラスおよびQueryFunctionクラスの詳細は、「QueryFunctionクラスの使用」およびStudio APIリファレンスを参照してください。