You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL创建.syn同义词词典报错:无效文本搜索配置文件名

解决PostgreSQL 16同义词词典.syn文件无法访问的问题

核心规则

PostgreSQL同义词词典的.syn文件必须满足两个硬性要求:

  • 必须存放在PostgreSQL安装目录下的share/tsearch_data文件夹(Windows默认路径为C:\Program Files\PostgreSQL\16\share\tsearch_data);
  • 文件权限需允许PostgreSQL服务用户读取。

分步解决操作

1. 规范.syn文件的位置与格式

  • 将am56314Syn.syn移动到C:\Program Files\PostgreSQL\16\share\tsearch_data目录下;
  • 检查文件格式:每行一组同义词映射,格式为原词 同义词,支持多同义词用空格分隔,示例:
    苹果 红富士 平安果
    电脑 计算机 PC
    
    文件编码需为UTF-8(无BOM),避免特殊字符或异常换行。

2. 设置正确的文件权限

PostgreSQL服务默认使用NT SERVICE\postgresql-x64-16用户运行(可在系统服务管理器中确认具体名称),需给该用户配置读取权限:

  • 右键tsearch_data文件夹 → 属性 → 安全 → 编辑 → 添加;
  • 输入NT SERVICE\postgresql-x64-16 → 点击「检查名称」确认用户存在 → 确定;
  • 给该用户勾选读取和执行权限,应用到文件夹及所有子文件。

3. 正确创建同义词词典

创建词典时,SYNONYMS参数仅需填写文件名,PostgreSQL会自动在tsearch_data目录下查找,无需指定全路径:

CREATE TEXT SEARCH DICTIONARY am56314syn (
    TEMPLATE = pg_catalog.synonym,
    SYNONYMS = 'am56314Syn.syn'
);

4. 验证词典功能

用ts_lexize函数测试同义词替换是否生效:

SELECT ts_lexize('am56314syn', '苹果');

若返回{红富士,平安果}则说明词典正常工作。

错误原因解析

  • 你之前使用绝对路径指定.syn文件,PostgreSQL出于安全限制,不允许直接引用tsearch_data目录外的文件,也不支持全路径引用该目录内的文件;
  • 用simple模板创建的是无同义词替换功能的基础词典,因此ALTER语句能执行,但无法实现同义词替换需求。

内容的提问来源于stack exchange,提问作者Arthur Maurer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:19:56