Nie da się tego zrobić ładnie korzystając z wyszukiwania pełnotekstowego MySQL. To, co robisz (zastępowanie znaków specjalnych wstępnie zdefiniowanym ciągiem), jest jedynym sposobem, aby to zrobić.
Możesz rozważyć użycie Sphinx Search zamiast. Najwyraźniej obsługuje unikanie znaków specjalnych i według wszystkich raportów jest znacznie szybszy niż domyślne wyszukiwanie pełnotekstowe.