Databean для получения CATENTDESCOVR

Мне нужно получить данные CATENTDESCOVR, используя Databean.

Есть ли какая-либо база данных, предоставленная IBM для получения данных?

Я использую IBM WebSphere Commerce V7.0 Feature Pack 8

3 ответа

Решение

Это хороший вопрос, и здесь ниже поясняется, как работает CATENTDESCOVR, этот ответ основан на WCS 7.0, FEP 7 . но я считаю, что у fep 8 такой же API, я не думаю, что IBM улучшила это в fep8!

  • информация CATENTDESCOVR индексируется и сохраняется в solr, НО причина индексации заключается только в поиске и проверке орфографии, вы можете увидеть, как мы копируем эту информацию в defultSearch и spellCheck, чтобы сделать эти значения доступными для поиска и быть частью проверки орфографии (конец schema.xml).

если вы посмотрите, как эти данные индексируются и хранятся в solr в schema.xml, вы найдете следующую строку

   <!--
   Catentry's description override: map to table CATENTDESCOVR
   -->
   <field name="nameOverride" type="wc_text" indexed="true" stored="true"  multiValued="true"/>
   <field name="shortDescriptionOverride" type="wc_text" indexed="true" stored="true"  multiValued="true"/>
   <field name="keywordOverride" type="wc_text" indexed="true" stored="true"  multiValued="true"/>

пожалуйста, обратите внимание, здесь multiValued="true", это означает, что если у вас есть несколько хранилищ, принадлежащих одному и тому же Esite, solr индексирует nameOvr, descOvr как многозначное для этого catentryId, но solr не знает, какое переопределенное имя принадлежит какому хранилищу, как сказал этот компонент, IBM solr индексирует главный каталог данные не хранят конкретные данные.

это ставит вопрос о том, как переопределенное имя отображается для магазина в магазине?

ответ заключается в использовании постпроцессора WC-Search:

com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCatalogEntryViewDescriptionQueryPostprocessor

если вы посмотрите на реализацию этого постпроцессора, вы найдете следующие шаги высокого уровня:

1 - получить catOvrGrpId:

catOvrGrpId = CatalogOverrideHelper.getOverrideGroupIdForStore(this.iStoreId)

2- получить необходимые переопределенные данные, позвонив в службу DSL:

JDBCQueryService service = new JDBCQueryService("com.ibm.commerce.catalog");

queryParameters.put("language", langIds);
queryParameters.put("UniqueID", catEntryUniqueIDs);
queryParameters.put("catOverrideGroupID", groupIds);

service.executeQuery("IBM_Get_CatentryDescOverride_By_LangId_And_CatentryId_And_GroupId", 
          queryParameters);

3 - преобразовать список массивов, возвращенных в JSON-совместимый результат:

populateOverrideCatalogEntries((List)listOfPhysicalObjects, catalogEntryViews);

Вы можете повторно использовать коды выше и попытаться декомпилировать SolrRESTSearchCatalogEntryViewDescriptionQueryPostprocessor чтобы понять, как вы можете прочитать эту информацию из базы данных.

запрос для IBM_Get_CatentryDescOverride_By_LangId_And_CatentryId_And_GroupId существует под Search/xml/config/com.ibm.commerce.catalog/wc-query-utilities.tpl

Надеюсь, это будет информативным для вас.

Спасибо Абед

Короткий ответ: у DataBean нет доступа к этим данным.

Длинный ответ [начало] состоит в том, что вам нужно использовать уровни BOD+DSL для доступа к таким данным. Либо через JSP, используя тег getData (Aurora широко использует этот тег), либо используя код Java (иногда используя выражения XPath...). Вы также можете проследить запрос: см. Здесь.

Однако, насколько я понимаю, идея переопределений заключается в том, что они прозрачны для внешнего интерфейса. Т.е. переопределения описаний заменяют основные описания при их настройке. посмотреть здесь

Не уверен, что вы пытаетесь сделать с доступом к этим данным напрямую. Переопределить логику WCS?

CATENTDESCOVR уже будет проиндексирован в вашем ядре solr.

Найдите в файле wr-data-config.xml файл solr\home\MC_10001\en_US\CatalogEntry\conf, и вы увидите, что он отображается в ядро.

Когда вы запрашиваете данные у solr, один из фильтров постобработки, определенный в wc-search.xml проекта Search EAR, заменит значение переопределения как "имя" или "шорткеск" возвращаемых значений.

Таким образом, вам нужно всего лишь вызвать службу отдыха как обычно, чтобы получить это значение. При условии, конечно, вы хотите это с внешнего интерфейса.

Если вам нужен бэкэнд, вы можете использовать CatalogEntryFacadeClient для выполнения запроса solr.

Другие вопросы по тегам