2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本: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. 配置 #

A dict_xsyn 词典接受以下选项

  • matchorig 控制词典是否接受原始词。默认值为 true

  • matchsynonyms 控制词典是否接受同义词。默认值为 false

  • keeporig 控制词典输出中是否包含原始词。默认值为 true

  • keepsynonyms 控制词典输出中是否包含同义词。默认值为 true

  • rules 是包含同义词列表的文件的基名。此文件必须存储在 $SHAREDIR/tsearch_data/ 中(其中 $SHAREDIR 表示 PostgreSQL 安装的共享数据目录)。其名称必须以 .rules 结尾(该结尾不应包含在 rules 参数中)。

规则文件具有以下格式

  • 每行表示单个词的同义词组,该词在行中首先给出。同义词用空格隔开,因此

    word syn1 syn2 syn3
    
  • 井号 (#) 是注释分隔符。它可以出现在行的任何位置。行中的其余部分将被跳过。

查看 xsyn_sample.rules,该文件已安装在 $SHAREDIR/tsearch_data/ 中,以获取示例。

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;

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用 此表格 报告文档问题。