Есть запрос вида:
SELECT id,
name,
ts_rank_cd(to_tsvector('russian', name), query)
FROM catalog_product,
to_tsquery('russian', 'телевизор') query
WHERE to_tsvector('russian', name) @@ query;
Меня смущает, что тут дублируется часть "to_tsvector('russian', name)".
На самом деле это упрощенный пример, в реальном запросе там в этом месте сильно сложнее, что-то вроде
setweight( coalesce( to_tsvector('russian', name),''),'A') || ' ' ||
setweight( coalesce( to_tsvector('russian', array_to_string(items, ' ')),''),'B')
Копипастить такую портянку дважды совсем не хочется.
Если бы была просто таблица, то можно было бы добавить в таблицу поле с посчитанным вектором. В моем случае этого сделать нельзя, т.к. выбираю я не из таблицы, а из другого запроса в котором сджойнены множество таблиц.
Можно обойтись без копипасты?