2016-08-05 27 views
0

我使用以下查询创建了一个文本搜索字典。Postgres:两个同名的字典

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的主人”的消息。我想丢弃查询试图删除超级用户拥有的,不属于我的english_stem字典。我如何删除我拥有的english_stem字典?

如果postgres允许同名的多个字典,我想在执行alter/drop命令时必须有一种方法来区分它们。顺便说一下,可能是由于我创建的那个,tsquery很慢;甚至比查询慢。

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

+1

您在不同的模式中创建了 - 只需指定完整路径 –

回答

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; 
+0

谢谢你这么多维罗。有效! –