F.11. dict_xsyn
dict_xsyn
(扩展的同义词词典)是一个全文本搜索的扩展字典模板的例子。 这个字典类型用它们的同义词组替代单词,并且因此使得使用任意它的同义词搜索这个单词成为可能。
F.11.1. 配置
dict_xsyn
字典接受下列的选项:
matchorig
控制字典是否接受原始单词。缺省是true
。matchsynonyms
控制字典是否接受同义词。缺省是false
。keeporig
控制原始单词是否包含在字典的输出里。缺省是true
。keepsynonyms
控制同义词是否包含在字典的输出里。缺省是true
。rules
是包含同义词列表的文件的基名。这个文件必须存储在$SHAREDIR/tsearch_data/
(这里的$SHAREDIR
意思是PostgreSQL安装的共享数据目录)里。 它的名字必须以.rules
(不包含在rules
参数中)结束。
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;