I think there is a slight bug in hlCover function in wparser_def.c If there is only one query item and that is the first word in the text, then hlCover does not returns any cover. This is evident in this example when ts_headline only generates the min_words:
testdb=# select ts_headline('1 2 3 4 5 6 7 8 9 10','1'::tsquery, 'MinWords=5'); ts_headline ------------------ <b>1</b> 2 3 4 5 (1 row) The problem is that *q is initialized to 0 which is a legitimate value for a cover. So I have attached a patch that fixes it and after applying the patch here is the result. testdb=# select ts_headline('1 2 3 4 5 6 7 8 9 10','1'::tsquery, 'MinWords=5'); ts_headline ----------------------------- <b>1</b> 2 3 4 5 6 7 8 9 10 (1 row) -Sushant.
Index: src/backend/tsearch/wparser_def.c =================================================================== RCS file: /home/postgres/devel/pgsql-cvs/pgsql/src/backend/tsearch/wparser_def.c,v retrieving revision 1.15 diff -c -r1.15 wparser_def.c *** src/backend/tsearch/wparser_def.c 17 Jun 2008 16:09:06 -0000 1.15 --- src/backend/tsearch/wparser_def.c 17 Jul 2008 02:45:34 -0000 *************** *** 1621,1627 **** QueryItem *item = GETQUERY(query); int pos = *p; ! *q = 0; *p = 0x7fffffff; for (j = 0; j < query->size; j++) --- 1621,1627 ---- QueryItem *item = GETQUERY(query); int pos = *p; ! *q = -1; *p = 0x7fffffff; for (j = 0; j < query->size; j++) *************** *** 1643,1649 **** item++; } ! if (*q == 0) return false; item = GETQUERY(query); --- 1643,1649 ---- item++; } ! if (*q < 0) return false; item = GETQUERY(query);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers