Re: Use full text to rank results higher if they are "closer hit"

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Thomas Nyberg <tomuxiong(at)gmx(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: Use full text to rank results higher if they are "closer hit"
Date: 2017-02-14 16:00:13
Message-ID: 31752812-97df-5560-ac62-c921dcbdb2af@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 02/14/2017 07:35 AM, Thomas Nyberg wrote:
> Hello,
>
> I think it's easier to explain my question with example code:
>
> ------------------------
> CREATE TABLE t ( s VARCHAR );
> CREATE TABLE
>
> INSERT INTO t VALUES ('hello'), ('hello world');
> INSERT 0 2
>
> SELECT * FROM t;
> s
> -------------
> hello
> hello world
> (2 rows)
>
> SELECT s, ts_rank(vector, query) AS rank
> FROM t, to_tsvector(s) vector, to_tsquery('hello') query
> WHERE query @@ vector;
> s | rank
> -------------+-----------
> hello | 0.0607927
> hello world | 0.0607927
> (2 rows)
> ------------------------
>
> Here both 'hello' and 'hello world' are ranked equally highly when
> searching with 'hello'. What I'm wondering is, is there a way within
> postgres to have it match higher to just 'hello' than 'hello world'?
> I.e. something like it slightly down-weights extraneous terms? Of course
> in general I don't know the query or the field strings ahead of time.

Some digging around found this:

https://www.postgresql.org/docs/9.6/static/textsearch-controls.html#TEXTSEARCH-RANKING

Setting a normalization of 1:

test=# SELECT s, ts_rank(vector, query, 1) AS rank
FROM t, to_tsvector(s) vector, to_tsquery('hello') query
WHERE query @@ vector;
s | rank
-------------+-----------
hello | 0.0607927
hello world | 0.0383559

>
> Thanks for any help!
>
> Cheers,
> Thomas
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2017-02-14 16:04:06 Re: Use full text to rank results higher if they are "closer hit"
Previous Message Artur Zakirov 2017-02-14 15:58:45 Re: Use full text to rank results higher if they are "closer hit"