dict_translate - text search dictionary template for translation

July 27, 2016 ยท View on GitHub

This dictionary normalizes input word into lexems and replaces them with groups of their translations.

Installation

Here the example of installation of the module:

$ git clone https://github.com/select-artur/dict_translate
$ cd dict_translate
$ make USE_PGXS=1
$ sudo make USE_PGXS=1 install
$ make USE_PGXS=1 installcheck
$ psql DB -c "CREATE EXTENSION dict_translate;"

Usage

You can use this template in the following way.

Create the file $SHAREDIR/tsearch_data/test_trn.trn:

$ forest wald forst holz
$ home haus heim

Create text search dictionary and configuration:

=> CREATE TEXT SEARCH DICTIONARY test_trn (
 Template = translate,
 DictFile = test_trn,
 InputDict = pg_catalog.english_stem);

=> CREATE TEXT SEARCH CONFIGURATION test_cfg(COPY='simple');

=> ALTER TEXT SEARCH CONFIGURATION test_cfg
 ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
   word, hword, hword_part
 WITH test_trn, english_stem;

You can test this dictionary using this table:

=> CREATE TABLE test (t text);

=> INSERT INTO test VALUES ('homes'), ('home'), ('forest'), ('haus');

Query examples:

=> SELECT * FROM test WHERE to_tsvector('test_cfg', t) @@ to_tsquery('test_cfg', 'forests');
   t    
--------
forest
(1 row)

=> SELECT * FROM test WHERE to_tsvector('test_cfg', t) @@ to_tsquery('test_cfg', 'home');
   t   
-------
 homes
 home
 haus
(3 rows)