Problem creating GIN index on multiple weighted columns

Started by Ryan Fuggerover 14 years ago2 messagesgeneral
Jump to latest
#1Ryan Fugger
arv@ryanfugger.com

I'm using 8.4.8, attempting to run the following command:

=> create index profile_search_index on profile_profile using
gin(setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', description), 'B'));

I get this error:

ERROR: syntax error at or near "||"
LINE 1: ... gin(setweight(to_tsvector('english', name), 'A') || setweig...
^

Is this a bug, or a known limitation, or is my syntax just wrong? The
following works fine:

select setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', description), 'B') from
profile_profile;

I would prefer not to store the precomputed tsvector in a separate
column if I can avoid it, although I'll do that if I can't get this to
work. Thanks for any help.

Ryan

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ryan Fugger (#1)
Re: Problem creating GIN index on multiple weighted columns

Ryan Fugger <arv@ryanfugger.com> writes:

I'm using 8.4.8, attempting to run the following command:
=> create index profile_search_index on profile_profile using
gin(setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', description), 'B'));

I get this error:

ERROR: syntax error at or near "||"
LINE 1: ... gin(setweight(to_tsvector('english', name), 'A') || setweig...
^

Is this a bug, or a known limitation, or is my syntax just wrong?

The latter. You need an extra pair of parentheses around any index
expression that's more complicated than a single function call.

regards, tom lane