Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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

F.12.1. 配置
F.12.2. 使用

dict_int 是全文搜索附加词典模板的一个示例。此示例词典的动机是控制整数(带符号和不带符号)的索引,既允许对这些数字进行索引,又能防止唯一单词数的过度增长,这对搜索性能影响很大。

此模块被视为 受信任 的,即它可以由在当前数据库上具有 CREATE 权限的非超级用户安装。

F.12.1. 配置 #

该词典支持三个选项

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

  • rejectlong 参数指定是否应截断或者略过超过长度的整数。如果 rejectlongfalse(这是默认值),则词典将返回整数的前 maxlen 位数字。如果 rejectlongtrue,则词典将超过长度的整数视为停止词,因此它将不会被索引。请注意,这也意味着不能对这样的整数进行搜索。

  • 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}

但实际使用会涉及将其包含在文本搜索配置中,如 第 12 章 所述。它可能看起来像这样

ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR int, uint WITH intdict;