小编Man*_*dez的帖子

PostgreSQL-使ts_rank保持ts_vector的位置不变或定义自定义ts_rank函数

我正在电子商务平台上的一系列项目上执行加权搜索。我遇到的问题是ts_rank为不同的单词组合提供了完全相同的值,即使ts_vector为每组单词提供了不同的位置。

让我用一个例子说明一下:

如果我给ts_vector这个单词camas,它将给我以下内容:

'cam':1
Run Code Online (Sandbox Code Playgroud)

如果我给ts_vector这个单词sofas camas,它将给我以下内容:

'cam':2 'sof':1
Run Code Online (Sandbox Code Playgroud)

因此,camas越来越取决于单词组合不同的位置。

当我执行以下语句时:

select ts_rank(to_tsvector('camas'),to_tsquery('spanish','cama'));
Run Code Online (Sandbox Code Playgroud)

PostgreSQL给我0.0607927ts_rank计算值,而以下语句的计算值:

select ts_rank(to_tsvector('sofas camas'),to_tsquery('spanish','cama'));
Run Code Online (Sandbox Code Playgroud)

是相同的值:0.0607927

怎么会这样?

我想到的问题如下:ts_rank是否有办法按原样考虑ts_vector结构中包含的单词的位置,还是有办法为我定义一个自定义ts_rank函数以采取解释的话?

任何帮助将不胜感激。

postgresql full-text-search weighted

3
推荐指数
1
解决办法
2782
查看次数

标签 统计

full-text-search ×1

postgresql ×1

weighted ×1