PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

F.12. dict_int — 面向整数的全文搜索字典示例 #

F.12.1. 配置
F.12.2. 用法

dict_int 是全文搜索附加字典模板的一个示例。这个示例字典的设计动机是控制整数的索引方式:允许对这类数字建立索引,同时防止唯一词数量的过度增长,因为唯一词数量会严重影响搜索性能。

该模块被视为“可信”模块,也就是说,拥有当前数据库 CREATE 权限的非超级用户也可以安装它。

F.12.1. 配置 #

该字典接受三个选项:

  • maxlen 参数指定整型词允许的最大位数。默认值为 6。

  • rejectlong 参数指定超长整数应被截断还是被忽略。如果 rejectlong 为 false(默认值),字典返回整数的前 maxlen 位数字;如果 rejectlong 为 true,字典将超长整数视为停用词,从而不为其建立索引。请注意,这也意味着无法搜索到这样的整数。

  • absval 参数指定是否应移除整型词的前导“+”或“-”符号。默认值为 false。设为 true 时,会在应用 maxlen 之前移除符号。

F.12.2. 用法 #

安装 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;