Negative custom filtering doesn't seem to work for me

I have a list of products which has tags allergens and ingredients. I want to filter out products which have “lactose” or “milk” in allergens or ingredients for searches “lactose free” or “milk free” or “no lactose” or “no milk”. I am following advice from here: Adding Filters Based on the Query | How to | Managing Results | Guide | Algolia Documentation

However this is not having an effect when testing the rule. I am getting products which I can clearly see in the ingredients and allergens and even title where there’s “milk”.

Here is my rule:
{
“conditions”: [
{
“anchoring”: “contains”,
“pattern”: “milk free”,
“alternatives”: true
},
{
“anchoring”: “contains”,
“pattern”: “no milk”,
“alternatives”: true
},
{
“anchoring”: “contains”,
“pattern”: “lactose free”,
“alternatives”: true
},
{
“anchoring”: “contains”,
“pattern”: “no lactose”,
“alternatives”: true
}
],
“consequence”: {
“params”: {
“filters”: “NOT allergens:lactose AND NOT allergens:milk AND NOT ingredients:lactose AND NOT ingredients:milk”,
“query”: {
“edits”: [
{
“type”: “remove”,
“delete”: “milk free”
},
{
“type”: “remove”,
“delete”: “no milk”
},
{
“type”: “remove”,
“delete”: “lactose free”
},
{
“type”: “remove”,
“delete”: “no lactose”
}
]
}
},
“filterPromotes”: true
},
“enabled”: true,
“description”: “filters out products with lactose or milk in ingredients and allergens when searching “no milk”, “milk free”, “no lactose”, “lactose free””,
“objectID”: “qr-1618277474012”
}