You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中tsvector含连字符(-)的搜索失效问题咨询

解决PostgreSQL tsvector含连字符词条的搜索问题

问题出在PostgreSQL默认的文本解析规则上:to_tsquery会将连字符(-)视为分隔符,把hello-world拆分为hello和world两个词条进行与查询,但你的tsvector字段中存储的是完整的hello-world词条,因此无法匹配。

无需修改表数据,有两种简单的解决方式:

方法1:用双引号包裹带连字符的词条

在to_tsquery的查询字符串中,用双引号将含连字符的词条括起来,告诉PostgreSQL将其作为单个完整词条匹配:

SELECT 
  labels
FROM tbt
WHERE labels @@ to_tsquery('"hello-world" | jobs');

方法2:直接构造tsquery类型

跳过to_tsquery的解析步骤,直接将词条转换为tsquery类型再组合:

SELECT 
  labels
FROM tbt
WHERE labels @@ ('hello-world'::tsquery | 'jobs'::tsquery);

这两种方式都能让PostgreSQL识别完整的hello-world词条,从而匹配到对应的记录。

内容的提问来源于stack exchange,提问作者Bob Marley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:10:57