2015-04-29 53 views

回答

1

這是個好問題,下面是CATENTDESCOVR的工作原理,這個答案基於WCS 7.0,FEP 7。但我相信fep 8具有相同的API,我不認爲IBM在fep8中增強了這一點!

  • CATENTDESCOVR的信息索引和存儲在Solr的,但索引的原因僅僅是用於搜索和拼寫檢查,你可以看到我們是如何複製這些信息,以defultSearch和拼寫檢查,使這些值搜索併成爲拼寫檢查的一部分(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",這意味着如果你有multible店屬於對於相同的Esite,solr索引名稱爲ovr,descOvr爲catentryId的多值,但solr不知道哪個重寫名稱屬於哪個存儲區,該bean稱,IBM solr索引主存儲庫數據不存儲特定數據。

這帶來了問題如何在商店門前顯示每個商店的重寫名稱?

答案是利用WC-搜索後處理:

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

希望存在,這將是信息給你。

謝謝 Abed

1

簡短的回答是,沒有一個對公司Databeans訪問該數據。

[開始]長答案是,您需要使用BOD + DSL圖層才能訪問此類數據。 通過使用getData標記的JSP(Aurora廣泛使用此標記)或使用Java代碼(有時使用XPath表達式...)。您還可以跟蹤查詢:see here

但是,就我的理解而言,覆蓋的概念是它們對前端透明。即描述覆蓋將在設置時替換主要描述。 see here

不確定你想要直接訪問這些數據。覆蓋WCS邏輯?

0

CATENTDESCOVR已經在您的solr內核中編入索引。

查看solr \ home \ MC_10001 \ en_US \ CatalogEntry \ conf,在wc-data-config.xml中,您可以看到它被映射到內核中。

當您從solr請求數據時,搜索EAR項目的wc-search.xml中定義的其中一個Post處理過濾器會將覆蓋值填充爲返回值的「名稱」或「shortdesc」。

所以,你真的只需要調用其他服務就可以正常獲得這個值。提供的課程你想要從前端。

如果您需要它後端,您可以使用CatalogEntryFacadeClient執行solr查詢。