Im developing a product catalog solution supporting search and faceted navigation. Pretty straightforward job for elasticsearch. For every product i have its attributes and values plus an array of the categories the product is linked to. No problems there.
However no im trying to create the following, but i cant wrap my head around it:
Every product can have multiple links with other products using different predicates. Eg product x is an alternative for product y, product x is a dispenser for product y, etc.
What im trying to do is creating a faceted navigation where there is an overview of products that can be filtered using facets build from their own attributes, but also the facets based build from the attributes of linked products. Eg we have a collection of cartridges that are related to printers. The user can select the attributes of the cartridges to find the right cartridge, but also use the attributes of the printers to get to the right cartridge.
Should i handle this in the same way as the categories? Flattening the related products and create an array for each predicate and store them with every product?