-- 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 (1 row) -- 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 -- 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 -- 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 -- 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 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 -- Checking FragmentDelimiter testdb=# select ts_headline('1 2 3 4 5 1 2 3 1','2'::tsquery, 'MaxFragments=2,FragmentDelimiter=***'); ts_headline --------------------- 2***2 (1 row)