在 SQL 查询中连接来自 setweight 的 tsvectors 时,会引发语法错误:
ERROR: syntax error at or near "||"
如果我用返回的单个 tsvector 尝试它,它工作正常setweight
,如果我尝试将整个东西包装在另一个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 在这个查询中工作?