问题报告 纠错本页面

F.11. dict_xsyn

dict_xsyn(扩展的同义词词典)是一个全文本搜索的扩展字典模板的例子。 这个字典类型用它们的同义词组替代单词,并且因此使得使用任意它的同义词搜索这个单词成为可能。

F.11.1. 配置

dict_xsyn字典接受下列的选项:

rules文件有下列的格式:

查看xsyn_sample.rules(安装在$SHAREDIR/tsearch_data/里)获取一个实例。

F.11.2. 用法

安装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;