Postgres:两个同名词典

时间:2016-08-05 06:05:06

标签: postgresql dictionary

我使用以下查询创建了一个文本搜索词典。

CREATE TEXT SEARCH DICTIONARY english_stem 
(TEMPLATE = snowball, Language = english, StopWords = english);

但是我意识到已经存在一个同名的'english_stem'字典,它由超级用户拥有,我最终得到了两个同名的字典'english_stem';一个由超级拥有,一个由我拥有。

所以我尝试使用此查询删除我创建的那个:

DROP TEXT SEARCH DICTIONARY english_stem;

但我得到“[42501]错误:必须是文本搜索词典english_stem的所有者”消息。我想drop查询试图删除超级用户拥有的english_stem字典,而不是我拥有的。如何删除我拥有的english_stem字典?

如果postgres允许多个具有相同名称的词典,我猜必须有一种方法可以在对它们执行alter / drop命令时区分它们。

顺便说一下,可能是由于我创造的那个,tsquery很慢;甚至比查询更慢。

注意:我正在寻找一种方法来解决这个问题,而无需联系超级用户。

1 个答案:

答案 0 :(得分:1)

我相信您在架构中或在公共场合创建了字典。退房:

SELECT * from  pg_catalog.pg_ts_dict 
JOIN pg_catalog.pg_namespace n ON n.oid = pg_ts_dict.dictnamespace;

如果是这样,只需添加模式名称,例如:

DROP TEXT SEARCH DICTIONARY public.english_stem;