| From: | Thomas Nyberg <tomuxiong(at)gmx(dot)com> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Cc: | Thomas Nyberg <tomuxiong(at)gmx(dot)com> |
| Subject: | Use full text to rank results higher if they are "closer hit" |
| Date: | 2017-02-14 15:35:29 |
| Message-ID: | 7104da68-158b-de80-b1ba-47c934e1c87f@gmx.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
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.
Thanks for any help!
Cheers,
Thomas
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Adrian Klaver | 2017-02-14 15:38:14 | Re: database folder name and tables filenames |
| Previous Message | Tom Lane | 2017-02-14 15:34:34 | Re: database folder name and tables filenames |