Я заинтересован в применении индекса для запросов по нескольким столбцам с использованием полнотекстового поиска Postgres.
. В соответствии с документами , я мог бы применить многостолбцовый индекс, например: Итак:
CREATE INDEX pgweb_idx ON pgweb USING GIN (to_tsvector('english', title || ' ' || body));
но я не совсем понимаю, когда этот индекс будет фактически использоваться. Должна ли функция to_tsvector, используемая в предложении WHERE, быть точно в том же формате, что и в индексе?
SELECT title FROM pgweb WHERE to_tsvector(title || ' ' || body) @@ to_tsquery('something')
Будут ли следующие запросы по-прежнему использовать индекс?:
SELECT title FROM pgweb WHERE to_tsvector(coalesce(title,'') || ' ' || coalesce(body,'')) @@ to_tsquery('something')
SELECT title FROM pgweb WHERE to_tsvector(body) @@ to_tsquery('something')