Как получить доступ к результатам перенаправления ключевых слов Endeca на уровне JSP с помощью ATG?

Я работаю над веб-приложением с Oracle ATG 10.1.2 и Endeca 3.1.1 (без Endeca Experience Manager) и пытаюсь заставить работать функцию перенаправления ключевых слов.

В конечном итоге я пытаюсь получить доступ к информации о перенаправлении ключевых слов, возвращаемой из Endeca (если таковая была) на моем уровне JSP, поэтому я могу перенаправить пользователя на URL-адрес перенаправления ключевого слова и / или отобразить этот URL-адрес. как часть отображаемой страницы.

Чтобы получить результаты от Endeca, мы используем пакетную службу /services/guidedsearch (как описано на стр. 51 в Руководство разработчика приложений на ассемблере (v3.1.1).

Если я использую свой браузер для прямого доступа к необработанным выводам управляемого поиска с сервера Endeca MDEX, я могу увидеть свою запись управляемого поиска и URL-адрес в свойстве endeca:redirect в возвращенном XML. Я также могу без проблем увидеть запись управляемого поиска в справочном приложении Endeca JSP («оранжевое приложение»).

Однако, когда я использую каплю ATG InvokeAssembler для получения результатов от Endeca, запись endeca:redirect не включается в ответ. Возвращаемая карта ContentItem имеет только следующие ключи:

@type, name, navigation, breadcrumbs, resultsList, searchAdjustments, zones, endeca:siteRootPath, endeca:contentPath

Нет endeca:redirect ключа, который я вижу в необработанном /services/guidedsearch XML-выводе.

Вот соответствующий фрагмент моего JSP-кода:

<dsp:droplet name="/atg/endeca/assembler/droplet/InvokeAssembler">
  <dsp:param name="includePath" value="/services/guidedsearch" />  
  <dsp:oparam name="output">
    <dsp:getvalueof param="contentItem" var="contentItem" vartype="com.endeca.infront.assembler.ContentItem" />
  </dsp:oparam>
</dsp:droplet>

Как я могу получить доступ к информации о перенаправлении ключевых слов, возвращаемой Endeca?


person Jon Schneider    schedule 10.10.2013    source источник


Ответы (2)


Вы также можете разработать свой собственный RedirectAwareHandler и просто извлечь перенаправление из SupplementList.

public ContentItem process(ContentItem pContentItem) throws CartridgeHandlerException {
    ENEQueryResults executeMdexRequest = executeMdexRequest(mMdexRequest);
    Object redirectURL = null;
    if (executeMdexRequest.getNavigation() != null && executeMdexRequest.getNavigation().getSupplements() != null){
        SupplementList supplements =  executeMdexRequest.getNavigation().getSupplements();
        Supplement supplement = null;

        for (Object object : supplements) {
            if (object instanceof Supplement) {
                supplement = (Supplement) object;
                if (supplement.getProperties() != null) {
                    redirectURL = supplement.getProperties().get("DGraph.KeywordRedirectUrl");
                    if (redirectURL != null) {
                        break;
                    }
                }
            }
        }
    }

//And now do your redirect
}
person radimpe    schedule 11.10.2013

Согласно документу Oracle Support 1530390.1, проблема заключается в том, что в ATG 10.1.2 капля InvokeAssembler внутренне закодирована для использования объекта Endeca ContentInclude (который не поддерживает перенаправление ключевых слов) вместо использования RedirectAwareContentIncludeHandler (который поддерживает).

Согласно этому документу, для решения этой проблемы в службе поддержки Oracle можно запросить исправление p16099140.

person Jon Schneider    schedule 11.10.2013