0

我需要在 Endeca 中返回一维下的所有值(例如 Product.category),并将其所有值作为 JSON 对象返回给内容组装器。有人可以提供实现此功能的最佳方法吗?

4

1 回答 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 回答