PLP show related products (UX variants, but technical non variants) with as few searches/lookups as possible

This should be a fairly common question for ECom platforms, how do we best show related products on the PLPs without creating a ton of searches?

To better understand the structure of data, we have 3 levels of products.
Articles. The general product.
Products. The colour/pattern.
Variants. All information needed for selling, e.g. size and price

So the way we’ll be able to find related products, is through checking the “ArticleNumber” attribute.
But we could instead of pushing products into Algolia, push the entire Article. There are a few potential issues that arise from that approach,

  1. As it’s not uncommon for an article to have 5+ different colours, it will cause the object size to be quite large.
  2. If we push the article, then we wouldn’t be able to utilize Algolias ability to show the most relevant products first. As we’d receive clusters of products from the search, which would all then be shown on the PLP one after another.
  3. Maintaining the data of clustered products, is most likely going to be harder than maintaining the data of singular products. All of the data is fed through Commerce Tools, where every product will exist as a product.

Maybe there is a smart way for Algolia to know products are related, that can be used for a scenario like this?

An example of a place where this sort of UI exists is Ikea, as in the picture linked below.