Dict xsyn

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search

[编辑] dict_xsyn

dict_xsyn (扩展的同义词字典)是用于全文索引的附加字典模版的例子。这个字典类型用它们的同义词组替换词本身,因此就可能用词的同义词进行搜索。

[编辑] Configuration

一个 dict_xsyn 字典接受下面的选项:

  • keeporig 控制是否包括原始词(如果为 true),还是只包含同义词(如果 false)。缺省是 true。
  • rules是包含同义词的文件的一个基础名。这个文件必须存储在 $SHAREDIR/tsearch_data/ (这里的 $SHAREDIR 意思是 PostgreSQL 安装的共享数据目录)。它的名字必须以 .rules 结尾(这部分不能包括在规则参数里)。

规则文件的格式如下:

  • 每行都代表一个词的同义词,这个词在第一行给出。同义词用空白分隔,也就是:
 word syn1 syn2 syn3
         
  • 井号符号(#)是注释分隔符。它可以出现在一行的任何位置。该行其余部分将被忽略。

比如,可以参阅 xsyn_sample.rules,它安装在 $SHAREDIR/tsearch_data/。

[编辑] 用法

运行安装脚本将会创建一个基于本包的 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
 -----------------------
  {word,syn1,syn2,syn3}

不过在现实世界里的使用会包括在文本搜索里包含它,如第十二章描述的那样。看起来会是这样:

  ALTER TEXT SEARCH CONFIGURATION english
      ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;
Personal tools