Мне нужно вернуть все значения в одном измерении (например, Product.category) в Endeca и вернуть все его значения в виде объекта JSON сборщику контента. Может ли кто-нибудь предоставить оптимальный способ достижения этой функции?
Endeca необходимо вернуть все свои значения в одном измерении
Ответы (1)
Это сложный вопрос, особенно потому, что я предполагаю, что product.category является иерархическим измерением.
С помощью обычного навигационного запроса (например, страницы результатов поиска) невозможно одновременно вернуть все уровни иерархического измерения. Однако, используя поиск по измерению (и если параметр --compoundDimSearch отключен), вы можете сделать такой запрос: D=*&Dn=0&Di=10001 (где 10001 может быть идентификатором измерения для product.category).
Это вернет каждое значение в измерении.
Что вы могли бы сделать, так это, возможно, сделать/расширить обработчик 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;
Это поможет вам построить объекты Ассемблера для результатов. Затем, если вы сделали запрос на ассемблере, который возвращает JSON, эти результаты также будут возвращены.
Одно большое предостережение: приведенные выше результаты не очень хорошо отформатированы. Я имею в виду, что это вернет каждое значение листа и его предков. Если вы хотите создать красивое иерархическое отображение, вам придется самостоятельно выполнить кучу форматирования.