我使用以下查询创建了一个文本搜索词典。
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很慢;甚至比查询更慢。
注意:我正在寻找一种方法来解决这个问题,而无需联系超级用户。
答案 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;