Dynamic facets in algolia

I am building an E-commerce website with the ability to add products with multiple variants, but I have a problem with indexing a product the right way on Algolia so as to be able to make dynamic facets.

A product as an array of options e.g

{
  "name": "sample product variants",
  "sku": "SWIFT",
  "active": true,
  "price": 25,
  "description": "This is to test the options<br>",
  "options": [
    {
      "id": "5fa92ac6f7fd01ca3f86613c",
      "name": "Size",
      "values": [
        { "id": "5fa92d3cf7fd01ca3f86613f", "name": "32" },
        { "id": "5fa92d3cf7fd01ca3f866140", "name": "35" }
      ],
      "variant": true,
      "input_type": "select",
      "required": true,
      "active": true,
      "attribute_id": "size"
    },
    {
      "id": "5fa92b24f7fd01ca3f86613d",
      "name": "Color",
      "values": [
        { "id": "5fa92d3cf7fd01ca3f866141", "name": "Red" },
        { "id": "5fa92d3cf7fd01ca3f866142", "name": "Blue" }
      ],
      "variant": true,
      "input_type": "select",
      "required": true,
      "active": true,
      "attribute_id": "color"
    }
  ],
  "id": "5fa92d3dea2b897c50db109b"
}

I want to be able to display facets for both the Color and Size options

Hi @techyunit,

For your use case, you can index each product variation as a single record, and then de-duplicate results at query time using the distinct feature. This will allow your users to make custom filters and display only variations that match these filters, without having duplicate results in case several variations match the search.

You can learn more about how to handle Item Variations here: Item Variations | How to | Managing Results | Guide | Algolia Documentation

I hope this solution matches your use-case!

I don’t think the solution matches my use-case, the example on the link you provided has some predefined filters like color, model, and type which are static. My problem here is that, in many cases, a merchant might want to add extra filters like ram size, connectivity, hard disk size, and many more depending on the product. How do I get these dynamic filters and display them on the page without hard-coding them? Please I really need this answer @marie.gillier

@marie.gillier Please I am still waiting for your reply.

Search through a non-static list of attributes will likely always be a frustrating experience for users. One merchant can use size, while another uses dimensions. It will be better if you standardise what attributes you expect to be filled in by the merchants, and then display the widgets for those attributes (possibly hidden using panel if nothing relevant for it shows up)