↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 全文检索组件 / 词典模板

simple

simple 词典:仅转换为小写并检查停用词

当前查看 PostgreSQL 18.6。

说明

simple 词典:仅转换为小写并检查停用词

模板名称(tmplname)
简单
初始化函数(tmplinit)
dsimple_init
词法化函数(tmpllexize)
dsimple_lexize

手册定义

simple 词典模板的工作方式是先把输入词元转换为小写,再根据停用词文件检查它。如果在文件中找到该词元,就返回一个空数组,从而丢弃该词元;否则,返回其小写形式作为正规化后的词位。或者,也可以把该词典配置为把非停用词报告为未识别,从而允许它们传递给列表中的下一个词典。

下面是一个使用 simple 模板的词典定义示例:

CREATE TEXT SEARCH DICTIONARY public.simple_dict (
    TEMPLATE = pg_catalog.simple,
    STOPWORDS = english
);

其中,english 是停用词文件的基名。文件完整名称将是 $SHAREDIR/tsearch_data/english.stop,其中 $SHAREDIR 表示 PostgreSQL 安装的共享数据目录,通常是 /usr/local/share/postgresql(如果不确定,可用 pg_config --sharedir 来确定)。文件格式只是一个单词列表,每行一个单词。空行和行尾空格会被忽略,大写会折叠为小写,但不会对文件内容做其他处理。

现在我们可以测试这个词典:

SELECT ts_lexize('public.simple_dict', 'YeS');
 ts_lexize
-----------
 {yes}

SELECT ts_lexize('public.simple_dict', 'The');
 ts_lexize
-----------
 {}

如果在停用词文件中找不到该词,我们也可以选择返回 NULL,而不是返回它的小写形式。这种行为可以通过把词典的 Accept 参数设置为 false 来启用。继续上面的例子:

ALTER TEXT SEARCH DICTIONARY public.simple_dict ( Accept = false );

SELECT ts_lexize('public.simple_dict', 'YeS');
 ts_lexize
-----------


SELECT ts_lexize('public.simple_dict', 'The');
 ts_lexize
-----------
 {}

在默认设置 Accept = true 下,只有把 simple 词典放在词典列表末尾才有意义,因为它不会把任何词元传递给后续词典。相反,Accept = false 只有在后面至少还有一个词典时才有用。

小心

大多数词典类型都依赖配置文件,例如停用词文件。这些文件必须采用 UTF-8 编码保存。当它们被读入服务器时,如果数据库编码不同,就会被转换为实际的数据库编码。

小心

通常,词典配置文件在某个数据库会话中第一次被使用时,只会被读取一次。如果你修改了配置文件,并希望强制现有会话加载新内容,可以对该词典执行一条 ALTER TEXT SEARCH DICTIONARY 命令。这可以是一条“假”更新,也就是并不实际修改任何参数值的更新。

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回全文检索组件 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。