【发布时间】:2019-01-17 09:08:42
【问题描述】:
在 SQL 查询中连接来自 setweight 的 tsvector 时,会引发语法错误:
ERROR: syntax error at or near "||"
如果我尝试使用setweight 返回的单个 tsvector,它工作正常,如果我尝试将整个东西包装在另一个 to_tsvector 调用中,它会出错,原因是没有 to_tsvector(tsvector) 函数,所以串联确实形成了一个tsvector。
SELECT *, ts_rank_cd(textsearch, query) AS score
FROM products, plainto_tsquery('awesome shirt') query,
setweight(to_tsvector(coalesce(title, '')), 'A') ||
setweight(to_tsvector(coalesce(description, '')), 'B') ||
setweight(to_tsvector(coalesce(tags, '')), 'C') ||
setweight(to_tsvector(coalesce(vendor, '')), 'D') textsearch
WHERE shop_url='somedomain.com' AND query @@ textsearch
ORDER BY score DESC
LIMIT 20 OFFSET 0;
我尝试将它包装在子查询中,但这使它成为记录,这会导致ts_rank_cd 出现问题,因为它期望textsearch 是tsvector 类型。我怎样才能让这个连接的 tsvector 在这个查询中工作?
【问题讨论】:
标签: sql postgresql postgresql-9.4 lateral-join