BUG #16345: ts_headline does not find phrase matches correctly

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: doitsimplefy@gmail.com
Date: 2020-04-05T21:49:23Z
Lists: pgsql-bugs, pgsql-hackers
The following bug has been logged on the website:

Bug reference:      16345
Logged by:          Augustinas Jokubauskas
Email address:      doitsimplefy@gmail.com
PostgreSQL version: 12.0
Operating system:   Ubuntu 18.04.3
Description:        

When query:

select ts_headline(
    $$Lorem ipsum urna.  Nullam  nullam ullamcorper urna.$$,
    to_tsquery('Lorem') && phraseto_tsquery('ullamcorper urna'),
    'StartSel=#$#, StopSel=#$#, FragmentDelimiter=$#$, MaxFragments=100,
MaxWords=100, MinWords=1'
);

is ran, a fragment of
> Lorem ipsum urna.  Nullam  nullam ullamcorper urna.
should be returned, however, the result is a single word of #$#Lorem#$# is
returned, meaning that ts_headline did not find the queried string.

Commits

  1. Further cleanup of ts_headline code.

  2. Fix default text search parser's ts_headline code for phrase queries.

  3. Cosmetic improvements for default text search parser's ts_headline code.