多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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} ``` 实际的使用情况包括包含它在一个文本搜索配置(在[Chapter 12](#calibre_link-426)里描述)里。 可能看起来像这样: ``` ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem; ```