If a "plain" or "direct" search fails, you could try the following things:
- Note the search in a log and manually create an alias every day for the top 10 failed searches. This will improve the perceived results of your users vastly, but requires lots of manual work every day.
- Normalize all your products by using some phonetic normalization, do the same for your search term and then do the search again. This works nice if the first method still doesn't provide a satisfactory result.
- Apply the Levenshtein distance or some other distance to select the "closest" matching/available word. For example, an interesting metric could be to see how many characters need to be inserted or swapped to get from one word to the next. This is expensive to compute but could yield interesting results too.
The idea of manually adjusting the search results comes from a talk by Martin Pauly which discussed the work he did for Blackstar Video, I think. It is a nice idea on how to gradually improve a very simplicistic approach in my opinion.