The usual definition for two vectors A and B is A.B = |A||B|cos ø. If A and B are binary it becomes, A and B = popcnt(A)popcnt(B)cos ø. The similarity measure is how close cos ø is to 1.
Using modern vocabulary, with a message and a set of search criteria using a word embedding on the message, calculate the similarity to each search using, cos ø = (A and B)/(popcnt A * popcnt B). This is only be vectorizable when there is an intrinsic popcnt instruction. Results that have > 0 values for cos ø mean there is some similarity.
So, to capture, (re)scan and flag all messages that contain certain keywords, design a system to generate a KEYSCORE. When eXtended to reduce false positives, build a follow on system called XKEYSCORE.
The last paragraph is pure speculation, but I think it has merit. Worth a try on your own data?