我正在电子商务平台上的一系列项目上执行加权搜索。我遇到的问题是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函数以采取解释的话?
任何帮助将不胜感激。