dict_int 是全文搜索附加字典模板的一个示例。这个示例字典的设计动机是控制整数的索引方式:允许对这类数字建立索引,同时防止唯一词数量的过度增长,因为唯一词数量会严重影响搜索性能。
该模块被视为“可信”模块,也就是说,拥有当前数据库 CREATE 权限的非超级用户也可以安装它。
该字典接受三个选项:
maxlen 参数指定整型词允许的最大位数。默认值为 6。
rejectlong 参数指定超长整数应被截断还是被忽略。如果 rejectlong 为 false(默认值),字典返回整数的前 maxlen 位数字;如果 rejectlong 为 true,字典将超长整数视为停用词,从而不为其建立索引。请注意,这也意味着无法搜索到这样的整数。
absval 参数指定是否应移除整型词的前导“+”或“-”符号。默认值为 false。设为 true 时,会在应用 maxlen 之前移除符号。
安装 dict_int 扩展会创建一个文本搜索模板 intdict_template,以及一个基于该模板、使用默认参数的字典 intdict。你可以修改参数,例如
mydb# ALTER TEXT SEARCH DICTIONARY intdict (MAXLEN = 4, REJECTLONG = true); ALTER TEXT SEARCH DICTIONARY
也可以基于该模板创建新的字典。
要测试该字典,可以尝试
mydb# select ts_lexize('intdict', '12345678');
ts_lexize
-----------
{123456}
但实际使用中需要按照 Chapter 12 所述将其纳入文本搜索配置。例如:
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR int, uint WITH intdict;