Generally, don't make assumptions on a user's intentions when performing a search (or anything else). If a user is looking for multiple 'cats' don't assume that a single 'cat' is good enough to quench the user's lust for feline shenanigans.
There are also a great deal of plurals that would be very difficult for you to adjust to - 'goose' vs. 'geese', for example. If you match some plurals but not others, you will begin to create confusion.
Define a straight forward search logic and stick to it. One suggestion might be:
- Exact match
- Partial match, from start ('cathedral' matches 'cathedrals'; 'be' matches 'bee', not 'rebels')
- Partial match, internal to string ('be' matches 'rebel')
Rank ordering the results based on the above would allow the user to learn the search pattern. Mixing results would make that more difficult. While the above still suffers from 'cathedrals' not matching 'cathedral', the user may likely adjust their search on their own.
If you are still want to guess on plurals, I'd suggest including a "do you want to try" section -- similar to Google's "did you mean" string when you misspell something in your search. This gives the user the ability to quickly just to plurals (or singulars) without cluttering results that may be exactly what they wanted.