Statistic based recommendation often has the disadvantage, that the set of the provided recommendation is limited to the "most"-popular, "most"-suitable to you or "most"-similar products. Often it is needed to extend the set of available recommendations by defining a subset of most-"something" items based on some external criteria. For example:
- most popular products for the predefined age (searching for a toy)
- also bought products with the same color (for clothes)
- also bought products with a predefined price (searching for a birthday present)
Submodels provide the possibility to group all the products based on an attribute. Recommendations can then be requested especially for the selected group.
There are two types of attributes available:
Nominal attribute (identified with [ABC] prefix);
Numeric attribute (identified with  prefix).
If the possible values of some attribute build a finite set of values, we are speaking about a nominal attribute sub-model. For example the amount of possible colors. The set of possible values is usually limited and every product has a single color attached to it.
Sub-models must be manually configured. Therefore it works only if the amount of possible values are relatively small and there is a large group of products for every value. Good examples would be "color" for clothing store, "genre" for a book store or "city district" for a newspaper. Bad examples would be
street name (there are too many of them), book author (there are too many of them as well) or book title (there is only a single item in the most of groups)
Coming back to the color example. We are configuring sub-models for a clothing store and want to get recommendations for some color (it can be a predefined color or a color of the context item). Every manufacturer has an own color classification. Similar colors can be grouped together for example as show on the picture bellow.
The configuration is done using the property dialog of the recommendation model.
After the sub-model is configured and built (happens automatically during the nightly build process) there are several cases for recommendation. Based on the example above the following are possible:
|Attribute example in the recommendation request||Result|
|Value "lime" is found in the green-ish group (Group 1). There are products in this group. If a model has some of them, they will be recommended.|
|color=sand||Value "indigo" is found in the blue-ish group. There is no products in the group. Nothing will be recommended by this model. The fallback model (if configured) will be used.|
|color=white||Value "white" was not found in any of groups. The main model will be used. Items from all sub-model groups can appear in the result (as if the sub models were not configured at all.).|
|no attribute specified||The main (full) model will be used, means the request is handled as if sub-models were not configured at all. Products from the whole shop could appear in the recommendation list.|
Very similar configuration can be done by using a numeric attribute.
Similar to the nominal sub-models the configuration is about the definition of groups. It is done by selecting limits for every group. The logic is the same like in the nominal attributes.
Once configured sub-modes are enabled for the model globally. All the scenarios which use this model will be aware of it. If it is not wished to activate the recommendation grouping in some cases, do not provide the attribute parameter in the request.
See the chapter 2a. Fetching Recommendations (deprecated) in the developer space for more information.