Skip to content

F.13. dict_int — 整数的示例全文搜索词典#

F.13.1. 配置
F.13.2. 用法

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

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

F.13.1. 配置#

该词典接受三个选项

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

  • rejectlong 参数指定是否应截断或忽略超长整数。如果 rejectlongfalse(默认值),则该词典将返回整数的前 maxlen 位。如果 rejectlongtrue,则该词典将超长整数视为停用词,因此不会对其进行索引。请注意,这也意味着无法搜索此类整数。

  • absval 参数指定是否应从整数单词中删除前导 +- 符号。默认值为 false。当为 true 时,在应用 maxlen 之前删除符号。

F.13.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;