There are no few online merchants who use a variety of email names and some even use different domains for different parts of the same organization which makes spam identification challenging for any Spam filter software. Every once in a while I go through the spam folder and when I find a good message, I mark it as Good and add the email address to an entry in Contacts I have named NOT SPAM. There are currently 30 or 40 emails for that contact, but it seems to work.
I have excellent results with
Spamsieve which works with several email clients including Mail. It highly configurable and optionally uses macOS Contacts as well as its own whitelist & blocklist, the
Habeas Safelist and its sensitivity is user adjustable. Unfortunately it is NOT free. The license costs $30.