有一个tsvector
是这样定义的:
'foo':3A,6A,9A,12A,15,18,21,24
'bar':1A,4A,7A,10A
当tsvector
与tsvector @@ $$'foo':* $$::tsquery
匹配时,ts_rank_cd
比tsvector @@ $$'bar':* $$::tsquery
大。
我希望bar
有更大的速率,因为它是1st
,而foo
是3rd
。有办法改变这种行为吗?
(psql 13在Google云sdk上使用)
tsvector
使用gin
索引
您可以在tsvector的前面添加一个标记,也可以将它添加到查询的前面。我让这个标记不是一个真正的英语单词,以使它不太可能在字符串中被自然地找到。
select ts_rank_cd('startzz:1'::tsvector || 'foo:3A,6A,9A,12A,15,18,21,24 bar:1A,4A,7A,10A'::tsvector,
'startzz & foo:*');
0.060606062
select ts_rank_cd('startzz:1'::tsvector || 'foo:3A,6A,9A,12A,15,18,21,24 bar:1A,4A,7A,10A'::tsvector,
'startzz & bar:*');
0.18181819
当然,你也可以自己编写排序函数,使用任何你认为有意义的操作原则。