首页 > 解决方案 > 全文搜索中权重参数的限制是多少

问题描述

我可以添加 4 个权重,但我添加第五个的那一刻出错了

update pois 
set tsearch = setweight(to_tsvector(name), 'A') ||
              setweight(to_tsvector(coalesce(state_name, '')), 'B') ||
              setweight(to_tsvector(coalesce(city_name)), 'C') ||
              setweight(to_tsvector(coalesce(address, '')), 'D') ||   -- 4 weight work ok
              setweight(to_tsvector(coalesce(sector_name, '')), 'E'); -- add this and got error

错误:无法识别的重量:69
SQL 状态:XX000

标签: sqlpostgresqlfull-text-searchpostgresql-12

解决方案


文档说你只能有4个:

setweight 返回输入向量的副本,其中每个位置都用给定的权重标记,可以是 A、B、C 或 D。(D 是新向量的默认值,因此不会显示在输出中。)这些标签当向量连接时保留,允许来自文档不同部分的单词通过排名函数进行不同的加权。

请注意,权重标签适用于位置,而不是词位。如果输入向量的位置已经被剥离,那么 setweight 什么也不做。


推荐阅读