dict_xsyn (扩展同义词词典) 是全文搜索的附加词典模板的一个示例。此词典类型将单词替换为其同义词组,因此可以使用任何同义词搜索单词。
dict_xsyn 词典接受以下选项
matchorig 控制词典是否接受原始单词。默认值为 true。
matchsynonyms 控制词典是否接受同义词。默认值为 false。
keeporig 控制原始单词是否包含在词典的输出中。默认值为 true。
keepsynonyms 控制同义词是否包含在词典的输出中。默认值为 true。
rules 是包含同义词列表的文件的基本名称。此文件必须存储在 $SHAREDIR/tsearch_data/ 中(其中 $SHAREDIR 表示 PostgreSQL 安装的共享数据目录)。其名称必须以 .rules 结尾(不包含在 rules 参数中)。
规则文件具有以下格式
每行代表一个单词的同义词组,该单词位于该行的开头。同义词用空格分隔,例如
word syn1 syn2 syn3
井号 (#) 符号是注释分隔符。它可以出现在行中的任何位置。该行的其余部分将被跳过。
请查看安装在 $SHAREDIR/tsearch_data/ 中的 xsyn_sample.rules 以获取示例。
安装 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}
实际应用将涉及将其包含在 第 12 章 中描述的文本搜索配置中。它可能看起来像这样
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;
如果您在文档中发现任何不正确的内容,与特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。