我需要在Endeca中的一个维度(例如Product.category)下返回所有值,并将其所有值作为JSON对象返回到内容汇编程序。有人能提供实现此功能的最佳方式吗?
答案 0 :(得分:2)
这是一个棘手的问题,特别是因为我假设product.category是一个层次维度。
使用常规导航查询(例如搜索结果页面),无法一次性恢复层级维度的每个级别。但是,使用维度搜索(如果您将--compoundDimSearch设置为OFF),您可以进行如下查询:D = *& Dn = 0& Di = 10001(其中10001可能是product.category的维度ID )。
这将带回维度中的每一个值。
你可以做的是制作/扩展DimensionSearchResultsHandler来帮助你。在preprocess()方法中,您将构建一个类似上面的查询。
然后在流程方法中,您可以执行以下操作:
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查询,那么也会返回这些结果。
一个很大的警告:上面的结果没有很好的格式化。我的意思是,这将带回每一片叶子价值及其祖先。如果你想创建一个漂亮的分层显示,你必须自己做一堆格式化。