On this page
F.12. dict_xsyn
dict_xsyn
(扩展同义词词典)是用于全文搜索的附加词典模板的示例。这种字典类型将单词替换为其同义词组,因此可以使用其任何同义词来搜索单词。
F.12.1. Configuration
dict_xsyn
词典接受以下选项:
matchorig
控制字典是否接受原始单词。默认值为true
。matchsynonyms
控制字典是否接受同义词。默认值为false
。keeporig
控制原始单词是否包含在字典的输出中。默认值为true
。keepsynonyms
控制同义词是否包含在字典的输出中。默认值为true
。rules
是包含同义词列表的文件的基本名称。该文件必须存储在$SHAREDIR/tsearch_data/
(其中$SHAREDIR
表示 PostgreSQL 安装的共享数据目录)中。其名称必须以.rules
结尾(该参数不应包含在rules
参数中)。
规则文件具有以下格式:
- 每行代表一个单词的一组同义词,该单词在该行上首先给出。同义词由空格分隔,因此:
word syn1 syn2 syn3
- 尖号(
#
)是 Comments 定界符。它可能出现在一行中的任何位置。该行的其余部分将被跳过。
例如,查看安装在$SHAREDIR/tsearch_data/
中的xsyn_sample.rules
。
F.12.2. Usage
安装dict_xsyn
extensions 后,将使用默认参数创建文本搜索模板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;