Thread: small bug in hlCover
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.
Attachment
Has any one noticed this? -Sushant. On Wed, 2008-07-16 at 23:01 -0400, Sushant Sinha wrote: > 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.
On Mon, 2008-08-04 at 00:36 -0300, Euler Taveira de Oliveira wrote: > Sushant Sinha escreveu: > > I think there is a slight bug in hlCover function in wparser_def.c > > > The bug is not in the hlCover. In prsd_headline, if we didn't find a > suitable bestlen (i.e. >= 0), than it includes up to document length or > *maxWords* (here is the bug). I'm attaching a small patch that fixes it > and some comment typos. Please apply it to 8_3_STABLE too. Well hlCover purpose is to find a cover and for the document '1 2 3 4 5 6 7 8 9 10' and the query '1'::tsquery, a cover exists. So it should point it out. On my source I see that prsd_headline marks only min_words which seems like the right thing to do. -Sushant. > > euler=# 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 registro) > > euler=# select ts_headline('1 2 3 4 5 6 7 8 9 10','1'::tsquery); > ts_headline > ----------------------------- > <b>1</b> 2 3 4 5 6 7 8 9 10 > (1 registro) > >
Thank you, patch applied. Sushant Sinha wrote: > Has any one noticed this? > > -Sushant. > > On Wed, 2008-07-16 at 23:01 -0400, Sushant Sinha wrote: >> 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. > > -- Teodor Sigaev E-mail: teodor@sigaev.ru WWW: http://www.sigaev.ru/