Endeca需要在一个维度下返回其所有值

时间:2014-12-30 11:48:38

标签: json endeca

我需要在Endeca中的一个维度(例如Product.category)下返回所有值,并将其所有值作为JSON对象返回到内容汇编程序。有人能提供实现此功能的最佳方式吗?

1 个答案:

答案 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查询,那么也会返回这些结果。

一个很大的警告:上面的结果没有很好的格式化。我的意思是,这将带回每一片叶子价值及其祖先。如果你想创建一个漂亮的分层显示,你必须自己做一堆格式化。