small bug in hlCover

Lists: pgsql-hackers
From: Sushant Sinha <sushant354(at)gmail(dot)com>
To: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: small bug in hlCover
Date: 2008-07-17 03:01:46
Message-ID: 1216263706.10473.10.camel@dragflick
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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 Content-Type Size
hlcover_bug.patch text/x-patch 921 bytes

From: Sushant Sinha <sushant354(at)gmail(dot)com>
To: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: small bug in hlCover
Date: 2008-08-03 19:15:17
Message-ID: 1217790917.6025.0.camel@dragflick
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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.


From: Sushant Sinha <sushant354(at)gmail(dot)com>
To: Euler Taveira de Oliveira <euler(at)timbira(dot)com>
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: small bug in hlCover
Date: 2008-08-04 03:57:11
Message-ID: 1217822231.13402.8.camel@dragflick
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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)
>
>


From: Teodor Sigaev <teodor(at)sigaev(dot)ru>
To: sushant354(at)gmail(dot)com
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: small bug in hlCover
Date: 2008-10-17 17:44:25
Message-ID: 48F8CEF9.30507@sigaev.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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(at)sigaev(dot)ru
WWW: http://www.sigaev.ru/