Monday, March 2, 2015

Missing wc-search.xml file when running setupSearchIndex.sh


The error:

An error occurred while exporting file xml/config/com.ibm.commerce.catalog-ext/wc-search.xml from EAR. The exception error was Java returned: 105.

You may miss the wc-search.xml file in certain location:

./AppServer/v70/profiles/ecom/installedApps/cellapp01/WC_instance.ear/xml/config/com.ibm.commerce.catalog-ext/wc-search.xml
./AppServer/v70/profiles/ecom/installedApps/cellapp01/WC_instance.ear/xml/config/com.ibm.commerce.catalog-fep/wc-search.xml

./CommerceServer70/components/foundation/subcomponents/search/search.ear/xml/config/com.ibm.commerce.catalog/wc-search.xml

./CommerceServer70/components/foundation/wc.ear/xml/config/com.ibm.commerce.catalog-fep/wc-search.xml

./CommerceServer70/wc.ear/xml/config/com.ibm.commerce.catalog-ext/wc-search.xml

Detailed log:


Feb 27, 2015 6:43:11 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: ENTRY INFO_TASK_WC_SEARCH_XML_CONFIG_IMPORT_START [Ljava.lang.String;@70f370f3Feb 27, 2015 6:43:11 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: RETURN Started importing the updated wc-search.xml to EAR. It will take a few minutes.Feb 27, 2015 6:43:11 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteINFO: Started importing the updated wc-search.xml to EAR. It will take a few minutes.Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: ENTRY INFO_TASK_WC_SEARCH_XML_CONFIG_IMPORT_END [Ljava.lang.String;@52e652e6Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: RETURN Finished importing the updated wc-search.xml to EAR.Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteINFO: Finished importing the updated wc-search.xml to EAR.Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: delete template fileFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile(File, File)FINER: ENTRY /usr/IBM/WebSphere/AppServer/v70/profiles/ecom/properties/soap.client.props.bak /usr/IBM/WebSphere/AppServer/v70/profiles/ecom/properties/soap.client.propsFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName(File)FINER: ENTRY /usr/IBM/WebSphere/AppServer/v70/profiles/ecom/properties/soap.client.props.bakFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName(File)FINER: RETURN bakFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile(File, File)FINER: RETURNFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: profileName: costco_solrFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: searchWASApplicationName: Search_costcocostcoFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: wasAdminUser: Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: sourceSearchSearchXML: xml/config/com.ibm.commerce.catalog-ext/wc-search.xmlFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINE: tempSearchSearchXML: /usr/IBM/WebSphere/CommerceServer70/instances/costco/temp/indexsetup/Search/wc-search.xmlFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile(File, File)FINER: ENTRY /usr/IBM/WebSphere/AppServer/v70/profiles/costco_solr/properties/soap.client.props /usr/IBM/WebSphere/AppServer/v70/profiles/costco_solr/properties/soap.client.props.bakFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName(File)FINER: ENTRY /usr/IBM/WebSphere/AppServer/v70/profiles/costco_solr/properties/soap.client.propsFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName(File)FINER: RETURN opsFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile(File, File)FINER: RETURNFeb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: ENTRY INFO_TASK_WC_SEARCH_XML_CONFIG_EXPORT_START [Ljava.lang.String;@62b562b5Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: RETURN Started exporting the wc-search.xml from EAR. It will take a few minutes.Feb 27, 2015 6:45:29 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteINFO: Started exporting the wc-search.xml from EAR. It will take a few minutes.Feb 27, 2015 6:45:40 PM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrResetWCSearchXMLTask performExecuteFINER: RETURNFeb 27, 2015 6:45:40 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: ENTRY _ERR_EAR_FILE_EXPORT_FAILED [Ljava.lang.Object;@5bc25bc2Feb 27, 2015 6:45:40 PM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessageFINER: RETURN An error occurred while exporting file xml/config/com.ibm.commerce.catalog-ext/wc-search.xml from EAR. The exception error was Java returned: 105.Feb 27, 2015 6:45:40 PM com.ibm.commerce.search.indexsetup.execution.job.SearchIndexSetupGenericJob runTaskFINER: RETURN


Similar errors:

Error 1, importing error:

An error occurred while importing file xml/config/com.ibm.commerce.catalog-fep/wc-search.xml to EAR. The exception error was Java™ returned: 105

According to the following link, the Search server has to be started:

http://www-01.ibm.com/support/docview.wss?uid=swg21668739

"The Search server must be started when issuing command setupSearchIndex, because after Feature Pack 7 has been applied, the wc-search.xml is exported from the Commerce Server and imported into the Search (Solr) server. If a federated node, then the Deployment Manager will need to be started."
Error 2, exporting error:
An error occurred while attempting to run task. The exception error was: An error occurred while exporting file xml/config/com.ibm.commerce.catalog-fep/wc-search.xml from EAR. The exception error was Java™ returned: 105.
"- On Linux /AIX/Solaris - Ensure the user that is running setupSearchIndex.sh is a non-root user and has write permissions on the directory <WC_InstallDir>\instances\...\temp\indexsetup\"
"- On Windows - Ensure you are logged on with a user ID that is a member of the Windows Administration group"
The log file shows:
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: profileName: WCProfile_solr
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: searchWASApplicationName: Search_WCProfile
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: wasAdminUser:
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: temp source search search xml: xml/config/com.ibm.commerce.catalog/wc-search.xml
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: temp search search xml: /opt/IBM/WebSphere/CommerceServer70/instances/WCProfile/temp/indexsetup/Search/wc-search.xml
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINE: temp ext search search xml path: /opt/IBM/WebSphere/CommerceServer70/instances/WCProfile/temp/indexsetup/Search/wc-search-ext.xml
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile
FINER: ENTRY
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName
FINER: ENTRY
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper getFileExtensionName
FINER: RETURN
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupFileHelper copyFile
FINER: RETURN
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessage
FINER: ENTRY INFO_TASK_WC_SEARCH_XML_CONFIG_EXPORT_START [Ljava.lang.String;@4ba64ba6
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessage
FINER: RETURN Started exporting the wc-search.xml from EAR. It will take a few minutes.
Nov 10, 2014 10:22:44 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
INFO: Started exporting the wc-search.xml from EAR. It will take a few minutes.
Nov 10, 2014 10:28:19 AM com.ibm.commerce.search.indexsetup.execution.task.ConfigWCforSolrCatalogEntryWCSearchXMLSetupTask performExecute
FINER: RETURN
Nov 10, 2014 10:28:19 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessage
FINER: ENTRY _ERR_EAR_FILE_EXPORT_FAILED [Ljava.lang.Object;@2f012f01
Nov 10, 2014 10:28:19 AM com.ibm.commerce.search.indexsetup.utils.SearchIndexSetupStringHelper getLocalizedMessage
FINER: RETURN An error occurred while exporting file xml/config/com.ibm.commerce.catalog-fep/wc-search.xml from EAR. The exception error was Java returned: 105.

Database JNDI Configuration Isuuse with Cloudscape DataSource demo


If you have database configuration problem when the WebSphere Commerce Search server is starting, you may see the following error message:

Failed to retrieve datasource for search server with JNDI name: jdbc/WebSphere Commerce Cloudscape DataSource demo.

One reason we saw this message was that the classpath missed the jdbc libraries. The Search server decide to switch to the default data source that is the demo one.


[10/9/14 11:05:32:513 PDT] 00000012 SolrRESTSearc W com.ibm.commerce.foundation.server.services.rest.search.config.solr.SolrRESTSearchDatabaseConfiguration parseElement(Element) WAS configurable namespace binding for Search datasource is not defined. Defaulting to Cloudscape for use with Toolkit.
[10/9/14 11:05:33:069 PDT] 00000012 SolrRESTSearc W com.ibm.commerce.foundation.server.services.rest.search.config.solr.SolrRESTSearchDatabaseConfiguration parseElement(Element) WAS configurable namespace binding for Search datasource is not defined. Defaulting to Cloudscape for use with Toolkit.

com.ibm.commerce.foundation.server.services.dataaccess.exception.ConfigurationException: CWXFS0020E: Failed to retrieve datasource for search server with JNDI name: jdbc/WebSphere Commerce Cloudscape DataSource demo.
at com.ibm.commerce.foundation.server.services.rest.search.config.solr.SolrRESTSearchDataSourceConfigurationFactory.getDefaultDataSource(SolrRESTSearchDataSourceConfigurationFactory.java:155)
at com.ibm.commerce.foundation.internal.common.config.ConfigurationFactory.getDefaultDataSource(ConfigurationFactory.java:203)
at com.ibm.commerce.foundation.internal.server.databaseconnection.J2EEDatabaseConnectionManager.initDataSource(J2EEDatabaseConnectionManager.java:93)
at com.ibm.commerce.foundation.internal.server.databaseconnection.J2EEDatabaseConnectionManager.getConnection(J2EEDatabaseConnectionManager.java:228)
at com.ibm.commerce.foundation.server.services.dataaccess.JDBCQueryService.getConnection(JDBCQueryService.java:1565)

Friday, January 23, 2015

Wednesday, January 14, 2015

WebSphere Commerce Search NullPointerException and Root Causes

You may see NullPointerException in Search server log when there are configuration problem.

The following is a list of the problems I have had so far:

1. wc-search.xml configuration problem:

If you did a APAR update or similar, the wc-search.xml in the com.ibm.comerce.catalog-ext maybe modified after the setupsearchindex.sh was executed

    <_config:server name="AdvancedConfiguration">
        <_config:common-http URL="http://localhost:10080/solr"
            allowCompression="true" connectionTimeout="15000"
            defaultMaxConnectionsPerHost="600" followRedirects="false"
            maxRetries="1" maxTotalConnections="600"
            reference="com.ibm.commerce.foundation.server.services.search.url"
            retryTimeInterval="1000" soTimeout="15000"/>
    </_config:server>
    <_config:cores>
        <_config:core catalog="11101" indexName="CatalogEntry"
            language="en_US" name="MC_11101_CatalogEntry_en_US"
            path="/MC_11101/en_US/CatalogEntry" serverName="BasicConfiguration"/>

then the serverName above does not match the one set in the _config:server, IBM code will throw a NullPointerException:

[1/14/15 11:48:27:150 PST] 000000b7 AbstractBaseR E com.ibm.commerce.foundation.rest.resourcehandler.AbstractBaseResourceHandler handleException(String, Exception, String) Caught unexpected exception, error is: {errors=[{errorCode=CWXFR0230E, errorKey=ERR_INTERNAL_SERVER_ERROR, errorLevel=SEVERE, errorMessage=CWXFR0230E: Internal server error. Details will be stored within the server logs.}]}
                                 com.ibm.commerce.foundation.internal.common.exception.FoundationApplicationException: An error has occurred.  If this problem persists, contact product support.
at com.ibm.commerce.foundation.server.services.search.SearchServiceFacade.performSearch(SearchServiceFacade.java:200)
at com.ibm.commerce.rest.search.handler.v2_0.AbstractSearchResourceHandler.executeSearch(AbstractSearchResourceHandler.java:333)
at com.ibm.commerce.rest.search.handler.v2_0.AbstractSearchResourceHandler.performSearch(AbstractSearchResourceHandler.java:165)
at com.ibm.commerce.rest.search.handler.v2_0.CategoryViewHandler.findSubCategories(CategoryViewHandler.java:482)
at com.ibm.commerce.rest.search.handler.v2_0.CategoryViewHandler.findTopCategories(CategoryViewHandler.java:268)
...
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1660)
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:946)
at com.ibm.commerce.foundation.server.services.rest.search.processor.solr.SolrRESTSearchExpressionProcessor.performSearch(SolrRESTSearchExpressionProcessor.java:467)
at com.ibm.commerce.foundation.server.services.search.SearchServiceFacade.performSearch(SearchServiceFacade.java:193)
... 84 more

2. ibm-web-ext.xml flag setting


If the flag of the enable-file-serving is not set to true in the ibm-web-ext.xml file, and you customized the Search-Solr.war and tries to access files, you may have NullPointerException from Apache Solr package too, since the Apache Solr code fails to retrieve request path from ServletRequest: req.getServletPath()

[1/15/15 9:16:55:431 PST] 00000028 SolrDispatchF E org.apache.solr.common.SolrException log null:java.lang.NullPointerException
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:155)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)

/usr/IBM/WebSphere/AppServer/v70/profiles/"instance name"/config/cells/cell01/applications/Search.ear/deployments/Search/Search-Solr.war/WEB-INF/ibm-web-ext.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-ext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd" version="1.0">
  <jsp-attribute name="reloadEnabled" value="true"/>
  <jsp-attribute name="reloadInterval" value="10"/>
  <reload-interval value="3"/>
  <enable-directory-browsing value="false"/>
  <enable-file-serving value="true"/>
  <enable-reloading value="false"/>
  <enable-serving-servlets-by-class-name value="false"/>
  <context-root uri="/solr"/>



</web-ext>



Here is a sample of full stack trace:

[2/11/15 17:17:42:268 PST] 0000002b SolrDispatchF E org.apache.solr.common.SolrException log null:java.lang.NullPointerException
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:155)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:997)
        at com.ibm.ws.webcontainer.webapp.WebApp.invokeFilters(WebApp.java:4044)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3971)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:945)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:191)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1656)

Friday, January 9, 2015

WebSphere Commerce Inventory Indexing Notes

Notes:

The di-proprocess script will do nothing for a full index build, if you check the wc-dataimport-preprocess-fullbuild.xml, the sql="".

In di-buildindex process, the inventory data is retrieved from INVENTORY table directly:

in the wc-data-config.xml file under the ...\IBM\WCDE_ENT70\search\solr\home\MC_10001\generic\CatalogEntry\Inventory\conf\wc-data-config.xml

for ItemBean:

SELECT 
    INVENTORY.CATENTRY_ID, 
    INVENTORY.STORE_ID, 
    INVENTORY.FFMCENTER_ID, 
    INVENTORY.QUANTITY
FROM INVENTORY
WHERE INVENTORY.QUANTITYMEASURE = 'C62' -- This is an ISO standard UOM: 1
AND INVENTORY.CATENTRY_ID IN (
    SELECT CATENTRY.CATENTRY_ID
    FROM CATENTRY, CATGPENREL
    WHERE CATGPENREL.CATALOG_ID = 10001
    AND CATENTRY.MARKFORDELETE = 0
    AND CATENTRY.CATENTRY_ID = CATGPENREL.CATENTRY_ID
    AND CATENTRY.CATENTTYPE_ID = 'ItemBean')
ORDER BY INVENTORY.CATENTRY_ID, INVENTORY.STORE_ID, INVENTORY.FFMCENTER_ID

for ProductBean:

SELECT 
    CATENTREL.CATENTRY_ID_
    PARENT CATENTRY_ID, 
    INVENTORY.STORE_ID, 
    INVENTORY.FFMCENTER_ID, 
    SUM(INVENTORY.QUANTITY) TOTAL_QUANTITY
FROM INVENTORY, CATENTRY, CATENTREL, CATGPENREL
WHERE CATGPENREL.CATALOG_ID = 10001
AND CATENTRY.CATENTRY_ID = CATGPENREL.CATENTRY_ID
AND CATENTRY.CATENTRY_ID = CATENTREL.CATENTRY_ID_CHILD
AND INVENTORY.QUANTITYMEASURE = 'C62'
AND CATENTRY.CATENTTYPE_ID = 'ItemBean'
AND CATENTREL.CATENTRY_ID_CHILD = INVENTORY.CATENTRY_ID
GROUP BY CATENTREL.CATENTRY_ID_PARENT, INVENTORY.STORE_ID, INVENTORY.FFMCENTER_ID
ORDER BY CATENTREL.CATENTRY_ID_PARENT, INVENTORY.STORE_ID, INVENTORY.FFMCENTER_ID

WebSphere Commerce Search Test URLs

Solr Search Engine

Solr Admin Console

http://localhost:8080/solr/admin.html#/

Default Core

http://localhost:8080/solr/Default/select?q=*%3A*

Category, Catalog Entry and Inventory Cores

http://localhost:8080/solr/MC_10001_CatalogEntry_en_US/select?q=*%3A*
http://localhost:8080/solr/MC_10001_CatalogGroup_en_US/select?q=*%3A*
http://localhost:8080/solr/MC_10001_CatalogEntry_Inventory_generic/select?q=*%3A*

Solr Rest Search APIs

Category View

http://localhost:8080/search/resources/store/10053/categoryview/@top?catalogId=10001&langId=-1&currency=USD&responseFormat=json&depthAndLimit=-1,-1,0

Product View

http://localhost:8080/search/resources/store/10053/productview/bySearchTerm/water?catalogId=10001&langId=-1&currency=USD&responseFormat=json&pageSize=20&pageNumber=1&depthAndLimit=*&profileName=IBM_findProductsBySearchTerm

Tuesday, January 6, 2015

WebSphere Commerce Solr Admin Console and Debugging and Monitoring Tools

Original IBM Link

Steps to enable Solr Admin Console:
  1. Import the Search_eardir/Search-Solr.war project into your workspace.
  2. Copy the following directories and files from the downloaded Solr.war file into the Search-Solr/WebContent directory:
    • css
    • img
    • js
    • tpl
    • admin.html
    • favicon.ico
  3. Open the Search-Solr/WebContent/WEB-INF/ibm-web-ext.xml file for editing. (Note: in a production environment, the file that should be modified is in the following location: .../IBM/WebSphere/AppServer/v70/profiles/${profile}/config/cells/cell01/applications/Search.ear/deployments/${instance}/Search-Solr.war/WEB-INF/ibm-web-ext.xml, NOT the one in this location: .../IBM/WebSphere/AppServer/v70/profiles/{profile}/installedApps/${cell}/Search.ear/Search-Solr.war/WEB-INF/ibm-web-ext.xml 
  4. Find the enable-file-serving flag and set it to true.
    For example, in bold:
    <web-ext
       xmlns="http://websphere.ibm.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
       version="1.0">
    
       <reload-interval value="3"/>
       <context-root uri="/solr" />
       <enable-directory-browsing value="false"/>
       <enable-file-serving value="true"/>
       <enable-reloading value="false"/>
       <enable-serving-servlets-by-class-name value="false" />
    
    </web-ext>
  5. Save your changes and close the file.
  6. Deploy the Search-Solr project; Right-click the project and select Java EE > Prepare for Deployment.
  7. Update the following files:
    • (Developer)Search-Solr.war/WEB-INF/web.xml
    • Search-Solr.war/WEB-INF/web.xml
    • Solr_cell/applications/solr.ear/deployments/solr/Search-Solr.war/WEB-INF/web.xml
  8. Change the URL pattern for the SolrSearchServlet servlet:
    • (FEP7)Change it to /Search-Solr
    • (FEP8)Change it to /solr
    For example:                                                                                   (FEP7) (Note: I used the /solr as FEP8 and it works)
    <servlet-mapping>
         <servlet-name>SolrSearchServlet</servlet-name>
           <url-pattern>/Search-Solr</url-pattern>
    </servlet-mapping>
    (FEP8)
    <servlet-mapping>
         <servlet-name>SolrSearchServlet</servlet-name>
           <url-pattern>/solr</url-pattern>
    </servlet-mapping>
  9. Save your changes and close the files.
  10. Publish the search EAR.
  11. Use the following URL to access the Solr administrative interface:
    • (FEP7)http://localhost/Search-Solr/admin.html
    • (FEP8)http://hostname:3737/solr/admin.html
For more information, see SolrAdminGUI.
Lucene Index Toolbox (Luke)
Luke is a development and diagnostic tool for search indexes. It enables you to display and modify search index content. For more information, seeLuke - Lucene Index Toolbox.
WebSphere Application Server JMX clients
JMX clients can read runtime statistics from Solr.
To set up the client:
  1. Add the JMX registry in the Solr core configuration file, solrconfig.xml:
    <jmx serviceURL="service:jmx:iiop://host_name:2809/jndi/JMXConnector"/>
  2. Use jconsole in Rational Application Developer to connect to the runtime JMX.
    When the Solr core is initialized, you can use jconsole to view information from JMX, such as statistics information for caches.
For more information, see SolrJmx.

Note:

1. If you don't set the 
<enable-file-serving value="true"/>
as instructed in step 4 (remember the location is: 
.../IBM/WebSphere/AppServer/v70/profiles/${profile}/config/cells/cell01/applications/Search.ear/deployments/${instance}/Search-Solr.war/WEB-INF/ibm-web-ext.xml) , you may get this exception:

[1/1/15 12:00:00:000 PST] 0000003d SolrDispatchF E org.apache.solr.common.SolrException log null:java.lang.NullPointerException at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:155)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:186)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:997)
at com.ibm.ws.webcontainer.webapp.WebApp.invokeFilters(WebApp.java:4044)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3971)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:945)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:191)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1660)



2. If you would like to let the web app handle some static pages, you may add the following to the web.xml file (again, find the right location in the config directory):

        <servlet>
                <servlet-name>FileServlet</servlet-name>
                <servlet-class>com.ibm.ws.webcontainer.servlet.SimpleFileServlet</servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
                <servlet-name>FileServlet</servlet-name>
                <url-pattern>hello.html</url-pattern>
        </servlet-mapping>

Monday, January 5, 2015

WebSphere Commerce Search Server Web Content Access Control File in a Clustered Environment




The file that is used is in the following location:

/usr/IBM/WebSphere/AppServer/v70/profiles/"instance name"/config/cells/cell01/applications/Search.ear/deployments/Search/Search-Solr.war/WEB-INF/ibm-web-ext.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-ext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd" version="1.0">
  <jsp-attribute name="reloadEnabled" value="true"/>
  <jsp-attribute name="reloadInterval" value="10"/>
  <reload-interval value="3"/>
  <enable-directory-browsing value="false"/>
  <enable-file-serving value="true"/>
  <enable-reloading value="false"/>
  <enable-serving-servlets-by-class-name value="false"/>
  <context-root uri="/solr"/>

</web-ext>

Checking WebSphere Commerce Search Server Configuration

Sometimes there is a need to retrieve the search server configuration information from a live server to validate the search configurations, here is a class could be used to do that:

The information displayed is retrieved from the following configuration files:

In Search project:
xml/config/com.ibm.commerce.catalog.ext/wc-search.xml
xml/config/com.ibm.commerce.catalog/wc-search.xml

public class SearchServerConfigInfo {

    public static String getAllSearchServerConfigsInfo() {
        final SolrSearchConfigurationRegistry catalogReg = SolrSearchConfigurationRegistry
                .getInstance("com.ibm.commerce.catalog");
        final Field f;
        final StringBuilder result = new StringBuilder();
        try {
            f = SolrSearchConfigurationRegistry.class.getDeclaredField("imapSolrSearchServerConfigByCoreName");
            f.setAccessible(true);
            final Map<String, SolrSearchServerConfig> coreSearchServerConfigMap = (Map<String, SolrSearchServerConfig>) f
                    .get(catalogReg);
            final Set<String> coreNames = coreSearchServerConfigMap.keySet();
            SolrSearchServerConfig searchConf;
            result.append("\n=== === ===\nSearch Configuration:\n--- --- ---\n");
            for (String coreName : coreNames) {
                searchConf = catalogReg.getSolrSearchServerConfiguration(coreName);

                if (searchConf != null) {
                    result.append("coreName:").append(coreName).append('\n');
                    String corePath = catalogReg.getCorePath(coreName);
                    result.append("corePath:").append(corePath).append('\n');
                    String masterCatalog = catalogReg.getMasterCatalog(coreName);
                    result.append("masterCatalog:").append(masterCatalog).append('\n');
                    String languageId = catalogReg.getLanguageId(coreName);
                    result.append("languageId:").append(languageId).append('\n');
                    String name = searchConf.getName();
                    result.append("name:").append(name).append('\n');

                    Map<String, String> searchServerConfMap = searchConf.getConfigParameters();
                    Set keys = searchServerConfMap.keySet();
                    result.append("parameters:[");
                    for (Object keyObject : keys) {
                        String key = (String) keyObject;
                        result.append("key=").append(key).append(',');
                        String val = searchServerConfMap.get(key);
                        result.append("value=").append(val).append(';');
                    }
                    result.append("]\n");

                    boolean isEmbeddedServer = searchConf.isEmbeddedServer();
                    result.append("isEmbeddedServer:").append(isEmbeddedServer).append('\n');

                    SolrSearchServerConfig.CommonHttpServerConfig httpServerConf = searchConf
                            .getCommonHttpServerConfig();
                    String url = httpServerConf.getURL();
                    result.append("url:").append(url).append('\n');

                    String reference = httpServerConf.getReference();
                    result.append("reference").append(reference).append('\n');
                }
                result.append("--- --- ---\n");
            }
        } catch (Exception e) {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            e.printStackTrace(pw);
            result.append("\nSearch configuration was not able to be retrieved. Exception stack trace:\n");
            result.append(sw.toString());
        }
        return result.toString();
    }
}



The result:

=== === ===
Search Configuration:
--- --- ---
coreName:MC_11101_CatalogEntry_Unstructured_en_US
corePath:/MC_11101/en_US/CatalogEntry/unstructured
masterCatalog:11101
languageId:-1
name:AdvancedConfiguration
parameters:[]
isEmbeddedServer:false
url:http://localhost:10080/solr
referencecom.ibm.commerce.foundation.server.services.search.url
--- --- ---
coreName:MC_11101_CatalogGroup_en_US
corePath:/MC_11101/en_US/CatalogGroup
masterCatalog:11101
languageId:-1
name:AdvancedConfiguration
parameters:[]
isEmbeddedServer:false
url:http://localhost:10080/solr
referencecom.ibm.commerce.foundation.server.services.search.url
--- --- ---
coreName:MC_11101_CatalogEntry_Inventory_generic
corePath:/MC_11101/generic/CatalogEntry/Inventory
masterCatalog:10751
languageId:-1
name:AdvancedConfiguration
parameters:[]
isEmbeddedServer:false
url:http://localhost:10080/solr
referencecom.ibm.commerce.foundation.server.services.search.url
--- --- ---
coreName:MC_11101_CatalogEntry_en_US
corePath:/MC_11101/en_US/CatalogEntry
masterCatalog:11101
languageId:-1
name:AdvancedConfiguration
parameters:[]
isEmbeddedServer:false
url:http://localhost:10080/solr
referencecom.ibm.commerce.foundation.server.services.search.url
--- --- ---

Retrieving Search Profiles from WebSphere Commerce Search Server

Sometimes there is a need to retrieve the search profile information from a live server to verify the search configurations, here is a class could be used to do that:

The information displayed is retrieved from the following configuration files:

In Search project:
xml/config/com.ibm.commerce.catalog.ext/wc-search.xml
xml/config/com.ibm.commerce.catalog/wc-search.xml

In Search-Rest project:
WEB-INF/config/com.ibm.commerce.rest-ext/wc-rest-resourceconfig.xml
WEB-INF/config/com.ibm.commerce.rest/wc-rest-resourceconfig.xml

public class SearchProfileInfo {
    public static String getAllProfilesInfo() {
        final ResourceConfigManager resourceConfigManager = ResourceConfigManager.getInstance();
        final Field aField;
        final Map<String, Map<String, Object>> coreResourceMap;
        final StringBuilder result = new StringBuilder();
        try {
            aField = ResourceConfigManager.class.getDeclaredField("searchProfileMappings");
            aField.setAccessible(true);
            coreResourceMap = (Map<String, Map<String, Object>>) aField.get(resourceConfigManager);
            final Set<String> coreNames = coreResourceMap.keySet();
            result.append("\n=== === ===\nSearch Profiles:\n--- --- ---\n");
            for (String coreName : coreNames) {
                Map<String, Object> resourceMap = coreResourceMap.get(coreName);
                Set<String> resourceUrls = resourceMap.keySet();
                for (String path : resourceUrls) {
                    String profileName = resourceConfigManager.getSearchProfile(coreName, path);
                    result.append("coreName:").append(coreName).append('\n');
                    result.append("urlPattern:").append(path).append('\n');
                    result.append("profileName:").append(profileName).append('\n');

                    SolrSearchProfileConfig profileConfig = SolrSearchConfigurationRegistry.getInstance()
                            .getSolrSearchProfileConfiguration(profileName);
                    result.append("profileDetails:").append(profileConfig.toString()).append('\n');
                }
                result.append("--- --- ---\n");
            }
        } catch (Exception e) {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            e.printStackTrace(pw);
            result.append("\nSearch Profiles were not able to be retrieved. Exception stack trace:\n");
            result.append(sw.toString());
        }
        return result.toString();
    }
}

Result:

=== === ===
Search Profiles:
--- --- ---
coreName:sitecontent
urlPattern:categorySuggestions
profileName:IBM_findNavigationSuggestion_Categories
profileDetails:[name:IBM_findNavigationSuggestion_Categories, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategorySuggestionQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:[inherits:true, parameters:{}, fields:{1=name_ntk_cs asc}], group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:sitecontent
urlPattern:store/{storeId}/sitecontent/webContentsBySearchTerm/{searchTerm}
profileName:IBM_findWebContentsBySearchTerm
profileDetails:[name:IBM_findWebContentsBySearchTerm, parent:null, index:UnstructuredContent, parameters:{limit=5, maxRows=100}, query:[inherits:true, parameters:{maxRows=100}, fields:{tika_content=, name=, longdesc=, shortdesc=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchTermAssociationExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByKeywordRelevancyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchWebContentStoreInfoExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainWebContentViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:[inherits:true, pre:, post:, parameters:{}, fields:{}], facet:[inherits:true, min:null, limit:null, sort:null, parameters:{}, converters:{}, category:{}], sort:[inherits:false, parameters:{}, fields:{1=name_ntk_cs asc, 2=mimetype asc}], group:null, heroproduct:null, spell:[inherits:true, parameters:{limit=5}], mapping:[inherits:true, parameters:{}], suggestion:null]
coreName:sitecontent
urlPattern:store/{storeId}/sitecontent/categorySuggestions
profileName:IBM_findNavigationSuggestion_Categories
profileDetails:[name:IBM_findNavigationSuggestion_Categories, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategorySuggestionQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:[inherits:true, parameters:{}, fields:{1=name_ntk_cs asc}], group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:sitecontent
urlPattern:webContentsBySearchTerm/{searchTerm}
profileName:IBM_findWebContentsBySearchTerm
profileDetails:[name:IBM_findWebContentsBySearchTerm, parent:null, index:UnstructuredContent, parameters:{limit=5, maxRows=100}, query:[inherits:true, parameters:{maxRows=100}, fields:{tika_content=, name=, longdesc=, shortdesc=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchTermAssociationExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByKeywordRelevancyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchWebContentStoreInfoExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainWebContentViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:[inherits:true, pre:, post:, parameters:{}, fields:{}], facet:[inherits:true, min:null, limit:null, sort:null, parameters:{}, converters:{}, category:{}], sort:[inherits:false, parameters:{}, fields:{1=name_ntk_cs asc, 2=mimetype asc}], group:null, heroproduct:null, spell:[inherits:true, parameters:{limit=5}], mapping:[inherits:true, parameters:{}], suggestion:null]
coreName:sitecontent
urlPattern:store/{storeId}/sitecontent/brandSuggestions
profileName:IBM_findNavigationSuggestion_Brands
profileDetails:[name:IBM_findNavigationSuggestion_Brands, parent:null, index:CatalogEntry, parameters:{searchType=12, limit=100, minCount=1, maxRows=0, sort=index}, query:[inherits:true, parameters:{searchType=12, maxRows=0}, fields:{}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchTypeExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchProductEntitlementExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchBrandSuggestionQueryPostprocessor], postprocessors(disabled):null], result:null, highlight:null, facet:[inherits:true, min:null, limit:null, sort:null, parameters:{limit=100, minCount=1, sort=index}, converters:{}, category:{}], sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:sitecontent
urlPattern:brandSuggestions
profileName:IBM_findNavigationSuggestion_Brands
profileDetails:[name:IBM_findNavigationSuggestion_Brands, parent:null, index:CatalogEntry, parameters:{searchType=12, limit=100, minCount=1, maxRows=0, sort=index}, query:[inherits:true, parameters:{searchType=12, maxRows=0}, fields:{}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCustomExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchTypeExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchProductEntitlementExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchBrandSuggestionQueryPostprocessor], postprocessors(disabled):null], result:null, highlight:null, facet:[inherits:true, min:null, limit:null, sort:null, parameters:{limit=100, minCount=1, sort=index}, converters:{}, category:{}], sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
--- --- ---
coreName:categoryview
urlPattern:store/{storeId}/categoryview/@top
profileName:IBM_findSubCategories
profileDetails:[name:IBM_findSubCategories, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{parentCatgroup_id_facet=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchShallowCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategorySequencingExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:byIds
profileName:IBM_findCategoryByUniqueIds
profileDetails:[name:IBM_findCategoryByUniqueIds, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{catgroup_id=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:store/{storeId}/categoryview/byParentCategory/{parentCategoryId}
profileName:IBM_findSubCategories
profileDetails:[name:IBM_findSubCategories, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{parentCatgroup_id_facet=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchShallowCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategorySequencingExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:@top
profileName:IBM_findSubCategories
profileDetails:[name:IBM_findSubCategories, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{parentCatgroup_id_facet=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchShallowCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategorySequencingExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:store/{storeId}/categoryview/byIds
profileName:IBM_findCategoryByUniqueIds
profileDetails:[name:IBM_findCategoryByUniqueIds, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{catgroup_id=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:byId/{categoryId}
profileName:IBM_findCategoryByUniqueIds
profileDetails:[name:IBM_findCategoryByUniqueIds, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{catgroup_id=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:store/{storeId}/categoryview/{categoryIdentifier}
profileName:IBM_findCategoryByIdentifier
profileDetails:[name:IBM_findCategoryByIdentifier, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{identifier_ntk=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:store/{storeId}/categoryview/byId/{categoryId}
profileName:IBM_findCategoryByUniqueIds
profileDetails:[name:IBM_findCategoryByUniqueIds, parent:null, index:CatalogGroup, parameters:{maxRows=500}, query:[inherits:true, parameters:{maxRows=500}, fields:{catgroup_id=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:{categoryIdentifier}
profileName:IBM_findCategoryByIdentifier
profileDetails:[name:IBM_findCategoryByIdentifier, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{identifier_ntk=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByCatalogExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByIdentifierExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
coreName:categoryview
urlPattern:byParentCategory/{parentCategoryId}
profileName:IBM_findSubCategories
profileDetails:[name:IBM_findSubCategories, parent:null, index:CatalogGroup, parameters:{}, query:[inherits:true, parameters:{}, fields:{parentCatgroup_id_facet=}, providers:[com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategoryEntitlementExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByStorePathExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchShallowCategoryExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchByPublishedEntryOnlyExpressionProvider, com.ibm.commerce.foundation.server.services.rest.search.expression.solr.SolrRESTSearchCategorySequencingExpressionProvider], providers(disabled):null, preprocessors:null, preprocessors(disabled):null, postprocessors:[com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchChildCategoryEntitlementQueryPostprocessor, com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTMainCatalogGroupViewResultQueryPostprocessor], postprocessors(disabled):null], result:[inherits:true, fields:{}, filters:null, filters(disabled):null], highlight:null, facet:null, sort:null, group:null, heroproduct:null, spell:null, mapping:null, suggestion:null]
--- --- ---
...