PostgreSQL does this with a dictionary that belongs to a text search configuration such as english. The simple configuration does no stemming. Stemming is language specific, and irregular forms such as ran may not be reduced.