Postgres Full Text Search With Short Word Matching
'route' and 'routing' stem to 'rout'.  Neither 'rou' nor 'routi' do.  So, they don't match.

You can use the prefix match to make 'rou' match, but plainto_tsquery doesn't understand that so you have to make the tsquery yourself:

SELECT ts_headline('english', inner_text, query, 'StartSel = &lt;em&gt;, StopSel = &lt;/em&gt;, ShortWord = 1') as inner_text_highlights
FROM (SELECT inner_text, ts_rank_cd(tokens, query) AS rank, query
    FROM doctokens, (select 'rou:*'::tsquery as query ) AS query
    WHERE tokens @@ query
    ORDER BY rank DESC
    LIMIT 5) AS query_results;
              inner_text_highlights               
--------------------------------------------------
 &lt;em&gt;Route&lt;/em&gt; builders give you a fluent syntax
 Does &lt;em&gt;Routing&lt;/em&gt; rhyme with looting?


Prefix matching won't let you match 'routi:*', because the things it would match against get the 'i' stripped off when stemming.