F.14. dict_xsyn — 示例同义词全文搜索词典#
dict_xsyn(扩展同义词词典)是全文搜索附加词典模板的一个示例。此词典类型将单词替换为其同义词组,因此可以使用其任何同义词搜索单词。
F.14.1. 配置#
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,以获取示例。
F.14.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}实际使用将涉及将其包含在文本搜索配置中,如第 12 章中所述。可能如下所示
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;