以下产量(似乎完全正确)0.1
:
select ts_rank_cd(to_tsvector('cat'), to_tsquery('cat'));
然而,以下产量t
:
select ts_rank_cd(to_tsvector('cat'), to_tsquery('cat')) > 0.1;
t
如果操作是,我希望它会产生>=
,而不是>
如何获得它的“真实”值ts_rank_cd
以便它返回f
?
作为背景,我正在编写一个使用键集分页的全文搜索查询ts_rank
,因此能够根据具体、精确的值对结果进行排序ts_rank
很重要。使用键集分页,客户端提供当前页面的最后一个结果作为参数并请求下一页。目前,当我的客户传回0.1
时,上述>
行为会导致错误的结果
ts_rank_cd
产生一个real
. 如果将其转换为double precision
,则结果变为:这解释了你观察到的东西,因为如果你将它与一个数字进行比较,它就会
real
被转换为。double precision
double precision
解决方案是将 0.1 显式转换为
real
,以便使用real
比较: