CREATE TABLE item_names
(
item_name character varying(255) NOT NULL,
culture_id integer NOT NULL,
item_id integer NOT NULL,
ft_idx_config regconfig,
CONSTRAINT pk_item_names PRIMARY KEY (item_id, culture_id)
)
Basically the table stores strings with varying language (actually en, de, fr, es) in the item_name column and implements the language association using the culture_id column. I would like to run fulltext queries against item_name + culture_id. The ft_idx_config shall be used to provide the appropriate ts_vector config for culture_id.
Question 1: The manual mentions (http://www.postgresql.org/docs/8.3/interactive/textsearch-tables.html) that there's an alternative method to create a GIN index.
<quote>
"It is possible to set up more complex _expression_ indexes wherein the configuration name is specified by another column, e.g.:
CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector(config_name, body));</quote>
A little further down it is also mentioned that indexes can even concatenate columns. Unfortunately I do not seem to be able combine both forms into:
CREATE INDEX ft_idx_item_name ON item_names USING gin(to_tsvector(ft_idx_config, item_name || culture_id));
Which, unless I am mistaken, I would need to execute a fulltext query for a specific language. Is there a way to solve this or do I need to change my table layout?
Question 2: When trying to insert rows into this table (using IBatis):
INSERT INTO item_names (item_id, item_name, ft_idx_config, culture_id) VALUES(#item_id#, #item_name#, #ft_idx_config#, #culture_id# )
I'm receiving this error: ERROR: column "ft_idx_config" is of type regconfig but _expression_ is of type character varying
Do I have to cast the parameter?