2025年9月25日: PostgreSQL 18 发布!
支持版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

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

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;

提交更正

如果您在文档中发现任何不正确、与您在使用特定功能时的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。