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;