0

The short of it - I'm performing a search on multiple fields (two normal fields and 10 custom_attributes fields. If a product is missing any one of those custom_attributes fields it is omitted from the results.

So for example, the user searches for some value 123:

  "search_criteria": {
    "filter_groups": [
      {
        "filters": [
          {
            "field": "name",
            "value": "%123%",
            "condition_type": "like"
          },
          {
            "field": "sku",
            "value": "%123%",
            "condition_type": "like"
          },
          {
            "field": "some_attribute_field",
            "value": "%123%",
            "condition_type": "like"
          }
        ]
      }
    ],
    "page_size": 100,
    "current_page": 1
  }

Returns 1 item (but should return 2 items):

{
  "items": [
    {
      "sku": "ABC-123",
      "name": "SOME PRODUCT",
      "custom_attributes": [
        {
          "attribute_code": "quality",
          "value": "generic"
        },
        ...
        {
          "attribute_code": "some_attribute_field",
          "value": "some stuff here that might be relevant"
        }
      ]
    }
  ]
}

If I don't include the some_attribute_field in the search request (so just the name and sku fields (which all products have):

  "search_criteria": {
    "filter_groups": [
      {
        "filters": [
          {
            "field": "name",
            "value": "%123%",
            "condition_type": "like"
          },
          {
            "field": "sku",
            "value": "%123%",
            "condition_type": "like"
          }
        ]
      }
    ],
    "page_size": 100,
    "current_page": 1
  }

I get 2 items (as expected):

{
  "items": [
    {
      "sku": "ABC-123",
      "name": "SOME PRODUCT",
      "custom_attributes": [
        {
          "attribute_code": "quality",
          "value": "generic"
        },
        ...
        {
          "attribute_code": "some_attribute_field",
          "value": "some stuff here that might be relevant"
        }
      ]
    },
    {
      "sku": "ABC-123S",
      "name": "SOME PRODUCT S-CLASS",
      "custom_attributes": [
        {
          "attribute_code": "quality",
          "value": "super"
        },
        ...
      ]
    }
  ]
}

The item that is not returned (ABC-123S) does not have some_attribute_field in its custom_attributes and thus is omitted. Is this intended behaviour?

Unfortunately I can't just perform multiple searches as there are actually 10 custom_attributes fields that need to be searched over and this is for a mobile app - so it would effectively require 11 search requests and then de-duping results etc, not to mention paginating those all those requests would add unnecessary complexity.

Is there some setting or something that needs to be done on in Magento to get this to work?
Or is there some configuration change that can be done to make this search process simpler?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.