自定义Tokenweight分词词典
Tokenweight词典主要用于中文分词,支持根据词权重,进行基于隐马尔可夫模型分布算法的段落分词。GaussDB中预定义默认中文分词词典,可通过系统表PG_TS_DICT(详细请参见《参考》中“系统表和系统视图 > 系统表 > 其他系统表 > PG_TS_DICT”章节)查看。Tokenweight词典为相似文档召回检索的BM25索引提供分词功能,加强中文相关文档检索的准确性。用户可根据业务需求自定义词典关键词权重,并在建立BM25索引时通过tokenize_dict参数指定词典名使索引按照自定义词典进行文档关键词切分。
Tokenweight词典支持定义关键词、同义词和停用词。其中关键词用于提升文本分词质量进而提高相似文档检索的准确性。同义词用于扩展查询语句涉及文档范围,提高检索的召回率。停用词用于过滤查询语句中无意义的词,加速检索时延。用户可以通过BM25索引,建索引语法指定该索引使用的词典,不指定则会设置为系统默认词典,其中配置了常见中文词汇和标准中英文停用词集。
注意事项
- 具有SYSADMIN权限的用户可以执行创建词典操作,创建该词典的用户自动成为其所有者。
- 临时模式(pg_temp)下不允许创建词典。
- 创建或修改词典之后,任何对于用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用ALTER语句更新对应词典的定义文件。
- 用户自定义词典不支持通过gs_dump/gs_dumpall工具进行导入导出,需要用户重新手动创建词典。
- 全文检索词典相关语法操作受GUC参数tsearch_options限制。
语法格式
CREATE TEXT SEARCH DICTIONARY name (
TEMPLATE = template
[, { option = value } [, ... ]]
); 
参数说明
- name
要创建的词典的名称(可指定模式名,否则在当前模式下创建)。
取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。
- template
模板名。
取值范围:系统表PG_TS_TEMPLATE(详细信息请参见《参考》中“系统表和系统视图 > 系统表 > 其他系统表 > PG_TS_TEMPLATE”章节)中定义的模板,本特性只涉及模板Tokenweight。
- option
参数名。模板Tokenweight对应参数及说明如下。
Tokenweight词典- USEDEFAULT
参数数值类型为布尔值,创建词典时是否使用BM25系统默认词典内容作为词典数据。设置为true时词典创建后将会自动导入系统默认设置常见的中文单词和停用词,为false时则内容为空。如果手动指定文件则该参数会被忽略,但不建议通过文件创建词典,推荐词典创建流程为创建词典,随后增量添加自定义的词典内容。
- TOKENFILE
词权重文件名,默认后缀名为tokw。文件格式为词权重和同义词相似度列表,每行可以表示词权重或者同义词相似度,词典处理时,文件中空行或者开头为“#”的注释以及每行开头和结尾的空格会被忽略。
- 词权重格式为token word [ : token weight ]。token weight可以为小数或者整数,默认值为3,中间“:”作为分隔符,词权重越高分词时越容易将该字符串分成一个词。
- 同义词支持两种格式:
- 多同义词:token word 1 :: token word 2 [ :: token word 3 [...]]。表示所有token words均互为同义词,相似度配置为0.8,过多的同义词组设置可能会造成包含同义词成员的BM25检索时延的增长。
- 单向同义词:token word 1 -> token word 2 [ : similarity]。表示token word 2是token word 1的同义词,similarity可以为0-1之间的数值表示其相似度,默认值为0.8。注意该定义中同义词相似度只表示单向同义,A为B的同义词不代表B为A的同义词。
- STOPFILE
词典定义文件的文件名仅支持小写字母、数据、下划线混合。
- USEDEFAULT
增量添加词典内容
使用函数gs_ts_dict_add_definition(regdictionary, "char", text[])可以增量添加词典内容。
- 第一个参数为词典OID,可以直接输入词典名字符串由数据库内部做自动转换。
- 第二个参数表示该次增量词典内容添加的内容类型,'t'表示关键词或者同义词,'s'表示停用词。
- 第三个参数是添加的词典内容,类型为文本数组,数组中每条数据应单独表示一条词典内容定义,定义格式请参见TOKENFILE。
该函数效果等同于DDL语句,运行后会清空所有数据库连接的词典缓存,重新加载词典时会造成BM25文本索引增删查操作大幅度变慢,不建议在线使用。