MySQL Escape Characters
MATCH(...) AGAINST('+tommy' IN ...)
    AND ... LIKE '%tommy -%'


That is, use FULLTEXT to do what it does best (search for words), then check the results against something more complex via LIKE or REGEXP.

Granted, it will take some intelligence in your app code to construct the suitable combination of MATCH and [R]LIKE.  But the result is fast and cover a lot more than FULLTEXT can do by itself.

Note:  The optimizer will do the MATCH first, then filter on the other stuff.