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}
但实际使用会涉及将其包含在文本搜索配置中,如 第 12 章 所述。它可能看起来像这样
ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR int, uint WITH intdict;