-- does it work testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'documents'), 'MaxFragments=1'); ts_headline ---------------------------------------------------------------------- ... purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity (1 row) -- does it respect MinWords testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'nosuchterm'), 'MaxFragments=1,MinWords=5'); ts_headline ----------------------- The purpose of FTS is -- does it respect MaxWords testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'document'), 'MaxFragments=1,MinWords=5,MaxWords=8'); ts_headline ---------------------------------------------------------------------- ... find documents, which satisfy query and optionally return -- does it exclude ShortWord in the end ( "in" is excluded) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'document'), 'MaxFragments=1,MinWords=5,MaxWords=10'); ts_headline --------------------------------------------------------------------------- ... find documents, which satisfy query and optionally return them -- does it exclude ShortWord in the front ( "The" is excluded) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'document'), 'MaxFragments=1,MinWords=5,MaxWords=13'); ts_headline ------------------------------------------------------------------------------------------- ... purpose of FTS is to find documents, which satisfy query and optionally return (1 row) -- when multiple words are used, the cover is shown in middle of the fragment (cover size <= MaxWords) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'optional & order'), 'MaxFragments=1,MinWords=5,MaxWords=10'); ts_headline ------------------------------------------------------------------------------- ... query and optionally return them in some order. Most common -- does it choose the smallest cover (there are three covers between positions (7,17), (17, 22), and (22, 31). The chosen one is (17, 22)) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'order & documents'), 'MaxFragments=1,MinWords=5,MaxWords=10'); ts_headline ------------------------------------------------------------------------------------- ... some order. Most common case: Find documents containing all query (1 row) -- does it show multiple fragments testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'query & documents'), 'MaxFragments=2,MinWords=5,MaxWords=10'); ts_headline --------------------------------------------------------------------------------------------------------------------------------------------------------------------- ... find documents, which satisfy query and optionally return them... common case: Find documents containing all query terms and return (1 row) -- does it exclude overlapping covers (even when MaxFragments = 2, the overlapping covers are excluded) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'query & order & documents'), 'MaxFragments=2,MinWords=5,MaxWords=15'); ts_headline --------------------------------------------------------------------------------------------------------------------- ... them in some order. Most common case: Find documents containing all query terms and return (1 row) -- when cover size is greater than MaxWords, does it break covers into fragments (first with MaxFragments = 1 and then with maxFragments = 2) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'purpose & similarity'), 'MaxFragments=1,MinWords=5,MaxWords=10'); ts_headline --------------------------------------------------------------------- ... purpose of FTS is to find documents, which satisfy query (1 row) testdb=# select ts_headline('The purpose of FTS is to find documents, which satisfy query and optionally return them in some order. Most common case: Find documents containing all query terms and return them in order of their similarity to the query.', to_tsquery('english', 'purpose & similarity'), 'MaxFragments=2,MinWords=5,MaxWords=10'); ts_headline ---------------------------------------------------------------------------------------------------------------------- ... purpose of FTS is to find documents, which satisfy query... order of their similarity to the query (1 row) -- using Oleg suggestions for testing some boundry cases testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','1&3'::tsquery, 'MaxFragments=1'); ts_headline ----------------------- ... 3 1 (1 row) testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','1&3'::tsquery, 'MaxFragments=2'); ts_headline ------------------------------------------ 1 2 3... 3 1 testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','1&2'::tsquery, 'MaxFragments=2'); ts_headline ---------------------------------------- 1 2... 1 2 testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','2'::tsquery, 'MaxFragments=2'); ts_headline -------------------------- ... 2... 2 testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','1&4'::tsquery, 'MaxFragments=2'); ts_headline ------------------------- ... 4 5 1 (1 row)