Я пытаюсь упростить этот запрос, поскольку он будет генерироваться с помощью динмейка в 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' - это представление, сгенерированное из нескольких таблиц.
Любая помощь высоко ценится!