2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:开发版
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.12. dict_int — 整数的示例全文检索词典 #

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;

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。