Postgresql 中文操作指南

F.14. dict_xsyn — example synonym full-text search dictionary #

dict_xsyn(扩展同义词词典)是一个用于全文搜索的附加词典模板的示例。此词典类型用词组的同义词代替词,因此可以使用任何同义词来搜索一个词。

F.14.1. Configuration #

一个 dict_xsyn 词典接受以下选项:

规则文件的格式如下:

查看安装在 $SHAREDIR/tsearch_data/ 中的 xsyn_sample.rules,这是一个示例。

F.14.2. Usage #

安装 dict_xsyn 扩展会基于它创建一个文本搜索模板 xsyn_template 和一个词典 xsyn,并带有默认参数。您可以更改参数,例如

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false);
ALTER TEXT SEARCH DICTIONARY

或基于模板创建新的词典。

要测试词典,您可以尝试

mydb=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {word,syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false, MATCHSYNONYMS=true);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {word}

实际使用中将包括在文本搜索配置中包括该选项,如 Chapter 12 所述。可能如下所示:

ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;