postgresql/contrib/dict_xsyn
..
expected
sql
dict_xsyn.c
dict_xsyn.sql.in
Makefile
README.dict_xsyn
uninstall_dict_xsyn.sql
xsyn_sample.rules

Extended Synonym dictionary
===========================

This is a simple synonym dictionary. It replaces words with groups of their
synonyms, and so makes it possible to search for a word using any of its
synonyms.

* Configuration

It accepts the following options:
 
 - KEEPORIG controls whether the original word is included, or only its
   synonyms. Default is 'true'.

 - RULES is the base name of the file containing the list of synonyms.
   This file must be in $(prefix)/share/tsearch_data/, and its name must
   end in ".rules" (which is not included in the RULES parameter).

The rules file has the following format:

 - Each line represents a group of synonyms for a single word, which is
   given first on the line. Synonyms are separated by whitespace:
   
   word syn1 syn2 syn3

 - Sharp ('#') sign is a comment delimiter. It may appear at any position
   inside the line.  The rest of the line will be skipped.

Look at xsyn_sample.rules, which is installed in $(prefix)/share/tsearch_data/,
for an example.

* Usage

1. Compile and install

2. Load dictionary

   psql mydb < dict_xsyn.sql

3. Test it
 
   mydb=# SELECT ts_lexize('xsyn','word');
   ts_lexize
   ----------------
   {word,syn1,syn2,syn3)

4. Change the dictionary options as you wish

   mydb# ALTER TEXT SEARCH DICTIONARY xsyn (KEEPORIG=false);
   ALTER TEXT SEARCH DICTIONARY

That's all.