On Thu, 31 May 2007, Erwin Moller wrote:

Hi all,

I installed TSEARCH2 on Postgres8.1 (Debian).
It runs all fine.
I have 2 tables indexed, and created triggers to keep the vectorcolumns
up
to date.


However, the text I indexed is a mix of Dutch and English and German.
The default stemmingprocess is an annoyance for me.
I would like to disable it.
I found out that using 'simple' instead of 'default' when using
to_tsvector() does excactly that, but I don't know how to change my
triggers and indexes to keep doing the same (using 'simple').


My TSEARCH2 and trigger-skills are developing, but I lack the confidence
to
change thing on the site (which is live), so I thought I check in here.


I have a table named tblvacature, that contains a bunch of columns that
need
to be indexed by TSEARCH.


This is what I did (and it works, except for the fact I want to disable
stemming)


1) ALTER TABLE tblvacature ADD COLUMN idxFTI tsvector;
2) UPDATE tblvacature SET idxFTI=to_tsvector('simple',
coalesce(title,'') ||' '||
coalesce(shortintro,'') ||' '||
coalesce(werkgever,'') ||' '||
coalesce(vacaturesteller,'') ||' '||
coalesce(standplaats,'') ||' '||
coalesce(divafdelingwerkgever,'') );


3) VACUUM FULL ANALYZE;


4) CREATE INDEX idxFTIvacture_idx ON tblvacature USING gist(idxFTI);


5) VACUUM FULL ANALYZE;


6) CREATE TRIGGER tsvectorupdate_vacature BEFORE UPDATE OR INSERT ON
tblvacature FOR EACH ROW EXECUTE
PROCEDURE tsearch2(idxFTI, title, shortintro, werkgever,
vacaturesteller,
standplaats, divafdelingwerkgever);


Step 2 worked fine: no stemming.
But how do I cange my step6 (trigger) so it keeps using 'simple'?
Or do I have to change the index itself (step4) too? Or both?


Please advise.


tsearch trigger is just an example, you could write your own function !
for example,

create function my_update() returns trigger as $$
BEGIN
  NEW.idxFTI=to_tsvector('simple',
  coalesce(title,'') ||' '||
  coalesce(shortintro,'') ||' '||
  coalesce(werkgever,'') ||' '||
  coalesce(vacaturesteller,'') ||' '||
  coalesce(standplaats,'') ||' '||
  coalesce(divafdelingwerkgever,'') );
  RETURN NEW;
END;
$$ language plpgsql;


btw, why do you don't use setweight() function to assign different weights to
the different attributes ?




Thanks for your time.


Regards,
Erwin Moller

-----------------------
PS: This is my first posting to pgsql-general: if I screw something up,
please let me know.



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster


        Regards,
                Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: [EMAIL PROTECTED], http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to