【发布时间】:2011-07-08 10:53:41
【问题描述】:
我正在尝试简化此查询,因为它将由 PHP 动态生成,并且我想减少处理开销(真正的查询会更长,但结构将是相同的!)。
SELECT title, type_name, ts_rank_cd(ARRAY[0.1,0.2,0.4,1.0],
setweight(to_tsvector(coalesce(title,'')), 'A')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B')
,
to_tsquery('search & query'))
FROM TestView WHERE
setweight(to_tsvector(coalesce(title,'')), 'D')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B')
@@
to_tsquery('search & query');
我希望通过定义类似别名的东西来尝试减少两次指定 tsquery 和 tsvector 的需要,这样就不必指定两次。像这样的东西(失败了,我不确定它是否接近正确!)
SELECT title, type_name, ts_rank_cd(ARRAY[0.1,0.2,0.4,1.0],
searchvector
,
searchquery
FROM TestView WHERE
setweight(to_tsvector(coalesce(title,'')), 'D')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B') AS searchvector
@@
to_tsquery('search & query') AS searchquery;
这可能吗,还是我只是坚持生成两次。
对于上下文“TestView”是从多个表生成的视图。
非常感谢任何帮助!
【问题讨论】:
标签: postgresql full-text-search