Hi all,
is it possible to index 2 columns in a table with tsearch2 using
different configurations for each column index?
I have a table publications that is defined as follows (simplified):
CREATE TABLE publications
(
title text,
author_list text,
fti_title tsvector,
fti_author_list tsvector,
)
WITHOUT OIDS;
CREATE INDEX idx_fti_author_list ON publications
USING gist (fti_author_list);
CREATE INDEX idx_fti_title ON publications
USING gist (fti_title);
CREATE TRIGGER tsvectorupdate_title
BEFORE INSERT OR UPDATE ON publications
FOR EACH ROW
EXECUTE PROCEDURE tsearch2('fti_title', 'title');
CREATE TRIGGER tsvectorupdate_author_list
BEFORE INSERT OR UPDATE ON publications
FOR EACH ROW
EXECUTE PROCEDURE tsearch2('fti_author_list', 'author_list');
The column 'author_list' contains names of authors with many
abbreviated first names, e. g. "S. Vollmer Michael F. Smith". These
abbreviated first names "S." and "F." shouldn't be indexed. To do
this, I created a tsearch2 configuration 'authors' that uses a
stopword list with "a...z" as stopwords.
The configuration seems to work fine, but I can't get tsearch2 to
use the 'author' config for column 'author_list' and 'default'
config for column 'title'. Is there any way to accomplish this?
If the solution is not possible or too complicated, as a workaround
I could use a function that deletes the abbreviated first names
before the column is indexed - similar to the function
"dropatsymbol()" mentioned in the tsearch2 documentation. I tried to
use replace(), but I'd need a function with regexps.
Thanks in advance,
- Stephan