Postgresql 是否可以在Postgres全文搜索中对部分匹配项进行排名?

Postgresql 是否可以在Postgres全文搜索中对部分匹配项进行排名?,postgresql,full-text-search,Postgresql,Full Text Search,我试图计算全文匹配的ts\u秩,其中查询中的某些术语可能不在要匹配的ts\u向量中。我希望在一场单词较多的比赛中排名更高。看起来很简单 因为不是所有的术语都必须匹配,所以我必须操作数,以提供一个查询,例如to_tsquery('one | two | three')(如果是&,则所有的都必须匹配) 问题是,无论有多少单词匹配,排名值似乎都是相同的。换句话说,它是最大化,而不是乘以子句 选择ts_rank('一二三'::tsvector,to_tsquery('1')给出0.0607927 选择t

我试图计算全文匹配的
ts\u秩
,其中查询中的某些术语可能不在要匹配的
ts\u向量
中。我希望在一场单词较多的比赛中排名更高。看起来很简单

因为不是所有的术语都必须匹配,所以我必须
操作数,以提供一个查询,例如
to_tsquery('one | two | three')
(如果是
&
,则所有的都必须匹配)

问题是,无论有多少单词匹配,排名值似乎都是相同的。换句话说,它是最大化,而不是乘以子句

选择ts_rank('一二三'::tsvector,to_tsquery('1')给出
0.0607927

选择ts|rank('一两三'::tsvector,to|tsquery('一|二|三|四')
给出预期的较低值
0.0455945
,因为'four'不是向量

但是
选择ts_rank('一两三'::tsvector,to_tsquery('一|二')

给出
0.0607927
,同样

选择ts|rank('一两三'::tsvector,to|tsquery('一|二|三')

给出
0.0607927

如果匹配更多术语,我希望
ts_rank
的结果更高

可能吗

针对一个可能的响应:我无法计算搜索查询的所有可能子序列作为交点,然后将它们全部合并到一个查询中,因为我将处理大型查询。我敢肯定,不管怎么说,有很多理由反对这一点


编辑:我知道
ts_rank\u cd
,但它并不能解决上述问题。

我得出的结论是
&
将项目放在一起进行排名。在我的select查询(我正在使用它进行搜索)中,项目是
|
ed。这似乎有效。

使用扩展名(仅linux AFAIK,由带来文本搜索的同一人编写)

它具有计算阵列之间TFIDF、余弦或重叠相似性的函数。它支持索引,所以速度很快


另一种方法是在使用查询之前对其进行“拼写检查”,基本上删除不在语料库中的任何查询词

非常感谢。四年前我遇到了一个问题,很奇怪能找到答案!