The ATG-Endeca integration uses the category hierarchy in the ATG product catalog to construct a category dimension in Oracle Endeca Commerce. In some cases, the hierarchy cannot be translated directly, because ATG’s catalog hierarchy supports categories with multiple parent categories, while Endeca requires each dimension value to have a single parent.

For example, suppose you have the following category structure in your product catalog:

This illustration is described in the surrounding text.

To deal with this structure, the ATG-Endeca integration creates two different records for the Men’s Shoes dimension value, one for each path to this category in the catalog hierarchy. These paths are computed by the atg.commerce.endeca.index.dimension.CategoryTreeService class.

The ATG-Endeca integration includes a component of this class, /atg/commerce/endeca/index/CategoryTreeService. This component, which is run in the first phase of the indexing process, creates data structures in memory that represent all possible paths to each category in the product catalog. A category can have multiple parents, and those parents and their ancestors can each have multiple parents, so there can be any number of unique paths to an individual category.

The CategoryToDimensionOutputConfig component then uses the /atg/commerce/endeca/index/CategoryPathVariantProducer component to create multiple records for each category, one for each path computed by CategoryTreeService. For each path, the corresponding record uses the pathname as the value of its dimval.spec property; this makes it possible to differentiate records that represent different paths to the same category.

In the example above, two records are created for the Men’s Shoes category. The dimval.spec entry in one of the records might be:

<PROP NAME="dimval.spec">
<PVAL>catClothing.catMensClothing.catMensShoes</PVAL>
</PROP>

The dimval.spec entry in the other record for the category might be:

<PROP NAME="dimval.spec">
<PVAL>catShoes.catMensShoes</PVAL>
</PROP>

Note that the period (.) is used as a separator in the property values rather the slash (/). This is done so the value can be passed to Oracle Endeca Commerce through a URL query parameter when issuing a search query, without requiring any characters to be escaped.


Copyright © 1997, 2014 Oracle and/or its affiliates. All rights reserved. Legal Notices