Обсуждение: Tsearch2 ranking

Поиск
Список
Период
Сортировка

Tsearch2 ranking

От
Hannes Dorbath
Дата:
2 rows of tsvector:

'bar':2 'baz':3 'foo':1
'bar':2 'baz':1 'foo':3

so source text was:

foo bar baz
baz bar foo

ts_query now is 'foo&baz&baz', so both matched.

How can I honor the correct order of the first row and rank it higher?
The position information is there, why doesn't rank() / rank_cd() not
use it?

Is there any way to make a difference between those to rows? Any? Even
if it's a bad hack? I really need it :/

Thanks in advance


--
Regards,
Hannes Dorbath

Re: Tsearch2 ranking

От
Hannes Dorbath
Дата:
ts_query now is 'foo&bar&baz'

Sorry, typo.

On 13.03.2006 12:38, Hannes Dorbath wrote:
> ts_query now is 'foo&baz&baz', so both matched.


--
Regards,
Hannes Dorbath

Re: Tsearch2 ranking

От
Oleg Bartunov
Дата:
On Mon, 13 Mar 2006, Hannes Dorbath wrote:

> 2 rows of tsvector:
>
> 'bar':2 'baz':3 'foo':1
> 'bar':2 'baz':1 'foo':3
>
> so source text was:
>
> foo bar baz
> baz bar foo
>
> ts_query now is 'foo&baz&baz', so both matched.
>
> How can I honor the correct order of the first row and rank it higher? The
> position information is there, why doesn't rank() / rank_cd() not use it?

There is a hint to do this. See "Phrase search" in
http://www.sai.msu.su/~megera/oddmuse/index.cgi/Tsearch_V2_Notes

>
> Is there any way to make a difference between those to rows? Any? Even if
> it's a bad hack? I really need it :/
>
> Thanks in advance
>
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83

Re: Tsearch2 ranking

От
Teodor Sigaev
Дата:
Order of terms in ts_query hasn't any meaning in current implementation. But you
can use your own ranking function.

Hannes Dorbath wrote:
> 2 rows of tsvector:
>
> 'bar':2 'baz':3 'foo':1
> 'bar':2 'baz':1 'foo':3
>
> so source text was:
>
> foo bar baz
> baz bar foo
>
> ts_query now is 'foo&baz&baz', so both matched.
>
> How can I honor the correct order of the first row and rank it higher?
> The position information is there, why doesn't rank() / rank_cd() not
> use it?
>
> Is there any way to make a difference between those to rows? Any? Even
> if it's a bad hack? I really need it :/
>
> Thanks in advance
>
>

--
Teodor Sigaev                                   E-mail: teodor@sigaev.ru
                                                    WWW: http://www.sigaev.ru/