Search and filter inner attributes of an object from a query

I made my best effort trying to explain clearly in the title what I want, but let me explain it better if I failed to do so.

I have a Firestore database of systems, which may have many components, which may have many problems, which may have many solutions. I designed it like a big document with all the attributes inside a map so it would be easy to read and write on the app. It looks something like this:

"system": {
      "objectID": ,
      "description": (searchable),
      "brand": (searchable),
      "type": ,
      "components": [
        {
          "id": ,
          "description": (searchable),
          "problems": [
            {
              "id": ,
              "description": (searchable),
              "keywords": [ ... ] (searchable),
              ...
              "solutions": [
                {
                  "id": ,
                  "description": ,
                   ...
                },
                {
                  "id": ,
                  "description":,
                  ...                  
                }
              ]
            }
          ]
        }
      ]
    },

The searchable attributes are the problem description, keywords, component’s description and system’s description and brand; and I want in return a specific problem ID, or a list of problem Ids of a system.

Is there any way in Algolia to get specific attribute values given a match inside an Object’s map? Like, get the problem Id that has most matches inside the system’s problems attributes, not all the problems of that system.

For example, let’s say I have a system: iPhone X. It has a component called Wi-Fi (or Anthena) and it has three problems:

  1. Wi-fi anthena is ok but there’s no internet access.
  2. Wi-fi software is bugged.
  3. Wi-Fi anthena is damaged.

What I want is, if I search: “No internet access on iPhone X”, I want to get the Object ID, which is the iPhone X’s ID, and also the problem[0] ID, because it is the most related one.

If it’s not possible, I have one solution in mind which is storing each component, problem and solution on their own document, on their own collection. That way, I can (or at least I think I can) cross search them and get the specific problem ID, then searching that ID on the system’s documents, but I don’t know if that’s an optimal solution, or at least logical.

So, I want to ask your opinion about my approach: is there a better way to structure the data, or is it ok to leave it like this?. What do you think about the idea of cross-searching different documents? Is it possible or not? Or in the best case, is there an option in Algolia to do inner object searches, and get specific attributes given a match inside a Map attribute of an object, as in the example of searching for a problem ID inside a system object given a query, and only get the matching problem IDs of that system.

I really hope I was somewhat clear explaining this. If not, please let me know and I will try to be more precise or maybe give better examples. This is for my thesis, so your help would be very important for me. Thank you very much.