Use an index for searching
Instead of an active search, use an index for searching.
https://lucene.apache.org/core/ is a good base
basically, each user would have an index. At an interval set, the engine would scan emails and create a meta source for retrieval. from there search results would be displayed via a "Hit Score".
The admin side should have the ability to set the indexing frequency and/or times indexing should happen. Also the ability to have a quota, and separate storage for the index(s). Also having the ability to rebuild a particular person's index, multiple or all. In addition to rebuilding, re-indexing where any new information since last scan is indexed.
this would make search results faster, more accurate and put less active load on the server... Everyone wins!
BONUS: ability to have the admin search emails.