I used a *hack* on a site recently that amalgamated the contents of my custom fields and stuck them in the MetaDescription field onBeforeWrite, which is searched by the default search.
I then created a custom db field to hold the actual meta description and replaced the field under the metadata tab with my own, as well a overriding the MetaTags fucntion to use my replacment field in it's return value.
I know this is a bit of a dirty hack, but if it's quick implentation you are after then it works well with very little overhead.
I'd call 2 a 'quick fix' rather than a 'dirty hack'. It's probably more efficient than 3 because only one field is searched. You'd probably want to use an XML parser to strip the HTML tags out of the searchable content though.
If I was going to do one SilverStripe site then move on, I'd use 2. If I used shared hosting so couldn't install Sphinx then I'd use 3. But Sphinx has to be the way to go.
I have been wanting to get round to sphinx module for some time, please let us know how you get on. I'd like to upgrade all my search so that it includes search pdfs and dynamically created pages... so as I say I'd be very interested in your results...