with that said, I encourage you to explore and implement it! all iteration is good iteration.
Discussion
yeah, i'm not implementing it
i've figured out that i can have the relay track what events it sends out and not send them out every time they match a filter
within some time window that seems reasonable, somewhere between 5 and 30 minutes i figure
doesn't have to be bloom filters, that is just a compact representation of a list of 32 byte, ie 64 character event IDs that you can represent as 1 bit, pretty much, with a low rate of false positives in the bloom filter
if you got 500 results and have them cached, then that's more than most relays are ever going to send, and that's - hypothetical 500 results already known, 16kb of data in your hypothetical filter that is intended to reduce bandwidth