我需要在 Endeca 中返回一维下的所有值(例如 Product.category),并将其所有值作为 JSON 对象返回给内容组装器。有人可以提供实现此功能的最佳方法吗?
问问题
1261 次
1 回答
2
这是一个棘手的问题,特别是因为我假设 product.category 是一个分层维度。
使用常规导航查询(例如搜索结果页面),无法同时恢复层次维度的每个级别。但是,使用维度搜索(如果您关闭了 --compoundDimSearch),您可以进行如下查询:D=*&Dn=0&Di=10001(其中 10001 可能是 product.category 的维度 ID)。
这将带回维度中的每个值。
您可以做的是制作/扩展 DimensionSearchResultsHandler 来帮助您。在 preprocess() 方法中,您将构造一个与上述类似的查询。
然后在 process 方法中,您将执行以下操作:
ENEQueryResults results = executeMdexRequest(mMdexRequest);
NavigationState navigationState = getNavigationState();
navigationState.inform(results);
DimensionSearchResults dimensionSearchResults = new DimensionSearchResults(cartridgeConfig);
DimensionSearchResultsBuilder.build(
getActionPathProvider(),
dimensionSearchResults,
navigationState,
results.getDimensionSearch(),
cartridgeConfig.getDimensionList(),
cartridgeConfig.getMaxResults(),
cartridgeConfig.isShowCountsEnabled());
return dimensionSearchResults;
这将帮助您为结果构建 Assembler 对象。然后,如果您进行了返回 JSON 的 Assembler 查询,也会返回这些结果。
一个重要的警告:上面的结果格式不正确。我的意思是,这将带回每个叶子值及其祖先。如果你想创建一个漂亮的分层显示,你必须自己做一堆格式化。
于 2015-01-12T15:25:16.917 回答