PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.11. dict_xsyn

`dict_xsyn`（扩展的同义词词典）是一个全文本搜索的扩展字典模板的例子。 这个字典类型用它们的同义词组替代单词，并且因此使得使用任意它的同义词搜索这个单词成为可能。

## F.11.1. 配置

`dict_xsyn`字典接受下列的选项：

- `matchorig`控制字典是否接受原始单词。缺省是`true`。

- `matchsynonyms`控制字典是否接受同义词。缺省是`false`。

- `keeporig`控制原始单词是否包含在字典的输出里。缺省是`true`。

- `keepsynonyms`控制同义词是否包含在字典的输出里。缺省是`true`。

- `rules`是包含同义词列表的文件的基名。这个文件必须存储在`$SHAREDIR/tsearch_data/` （这里的`$SHAREDIR`意思是PostgreSQL安装的共享数据目录）里。 它的名字必须以`.rules`（不包含在`rules`参数中）结束。

rules文件有下列的格式：

- 每行代表着一个单词的同义词组，单词在每行的开头给出。同义词用空格分开：

- 符号井号(`#`)是一个注释分隔符。它可能在一行中的任意位置出现。该行在它后面的部分将被跳过。

查看`xsyn_sample.rules`（安装在`$SHAREDIR/tsearch_data/`里）获取一个实例。

## F.11.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;

上一页 | 起始页 | 下一页
dict_int | 上一级 | dummy_seclabel