Dealing with Hierarchical Dimensions

When dealing with hierarchical dimensions, several use cases can be addressed in two ways. Either at search time, by configuring facets in the Search Logic, or at indexing time, by configuring options in Data Processing and Data Model.

See Also
About Exalead CloudView Sizing
The Impact of the Data Model on Performance
About facets

Examples:

  • For the search time solution, imagine you have 3 facets: People, Organization, and Role. If you want to be able to switch dimensions from Organization / Role to Role / People or Role / Organization, preparing all possible permutations would lead to important storage and complex field creation. In this case, it is simpler to choose how you want to present values at run time.

  • If you have multiple metas, for example type, subtype, model and always use them in the same order, it might be interesting to merge these metas in a single one called type/subtype/model. It is still possible to point on a specific level of the tree, for example, if you want to get model values only. This solution is faster in terms of query latency, but you cannot change the order.

To make it simple:

  • Choose the Search/Run time solution when you want flexibility, that is to say, avoid reindexing documents if you need to change the way dimensions have to be presented. This solution can yet lead to longer query latency compared to the indexing time solution when the amount of data is important.

  • Choose the indexing time solution when the amount of data to process is important and you need to have low query latency.