Поставка для полного поиска в postgres как часть FROM - PullRequest
0 голосов
/ 17 октября 2019

У меня есть запрос текстового поиска, который выглядит следующим образом

with query as (select to_tsquery('sometext'))
select
    t1.id
from 
    table1 as t1,
    to_tsvector(t1.f1) as vector
where
    (select * from query) @@ vector

Это работает, как ожидалось. Но когда я пытаюсь добавить больше полей к вектору, как это

with query as (select to_tsquery('sometext'))
select
    t1.id
from 
    table1 as t1,
    to_tsvector(t1.f1) || to_tsvector(t1.f2) as vector
where
    (select * from query) @@ vector

, я получаю синтаксическую ошибку около ||. Что я здесь не так делаю?

Моя база данных - PostgreSQL 9.4.

1 Ответ

1 голос
/ 17 октября 2019

В списке FROM разрешен вызов функции, как если бы это была таблица, но не выражение оператора. Вы можете перевести его на эквивалентный вызов функции:

with query as (select to_tsquery('sometext'))
select
    t1.id
from 
    table1 as t1,
    tsvector_concat(to_tsvector(t1.f1), to_tsvector(t1.f2)) as vector
where
    (select * from query) @@ vector
...