With regards to the lack of control over the Search API’s indexing you might want to check out this…
David Neale

Nice resource!

We only have a substring search requirement for one “lookup” right now, so we ended up actually using the datastore and tokenizing our strings into a repeated property with an index. It feels pretty hacky, but it seems to do the trick. Our first instinct (and maybe our future direction) will be to use the Search API.