2015-04-29 1 views

ответ

1

Это хороший вопрос, и вот ниже объясняется, как работает 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 индексирует имяOvr, 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

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

Thanks Abed

1

Короткий ответ, что не существует DataBean для доступа к этим данным.

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

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

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

0

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

Посмотрите в каталоге solr \ home \ MC_10001 \ en_US \ CatalogEntry \ conf, в файле wc-data-config.xml, и вы можете видеть, что он отображается в ядре.

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^