Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

F.13. dict_xsyn — 同义词示例全文检索词典 #

F.13.1. 配置
F.13.2. 用法

dict_xsyn(扩展同义词词典)是用于全文检索的附加词典模板示例。此词典类型用单词与其近义词组替换,从而可以使用其任何近义词来搜索单词。

F.13.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.13.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;