simple
simple 词典:仅转换为小写并检查停用词
当前查看 PostgreSQL 18.6。
说明
simple 词典:仅转换为小写并检查停用词
- 词典
- 简单
- 模板
- 简单
- 选项
- _null_
手册定义
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;最早采样版本不一定是实际引入版本。