Postgresql
帶有 tsvector_update_trigger 的 postgresql 自定義文本搜尋配置
我想使用自定義文本搜尋配置,
tsvector_update_trigger
以便能夠使用法語詞典和unaccent
.所以我這樣做了:
CREATE TEXT SEARCH CONFIGURATION fr ( COPY = french ); ALTER TEXT SEARCH CONFIGURATION fr ALTER MAPPING FOR hword, hword_part, word WITH unaccent, french_stem;
然後創建觸發器:
CREATE TRIGGER TS_tsv BEFORE INSERT OR UPDATE ON books FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(tsv, 'pg_catalog.fr', title, authors, descriptionText);
但不幸的是,當我想創建或更新一行時,我收到一條錯誤消息,告訴我 fr 不存在。
如何將此配置與觸發器一起使用?
創建新配置時
CREATE TEXT SEARCH CONFIGURATION fr ( COPY = french );
它不會出現在 中
pg_catalog
,而是出現在目前架構中(public
預設情況下)。
\dF
psql中的命令可以看出這一點:測試=# \dF 文本搜尋配置列表 架構 | 姓名 | 描述 ------------+------------+--------------------------------------- pg_catalog | 丹麥語 | 丹麥語的配置 pg_catalog | 荷蘭語 | 荷蘭語配置 pg_catalog | 英語 | 英文配置 pg_catalog | 芬蘭語 | 芬蘭語配置 pg_catalog | 法語 | 法語配置 pg_catalog | 德語 | 德語配置 pg_catalog | 匈牙利語| 匈牙利語配置 pg_catalog | 意大利語 | 意大利語配置 pg_catalog | 挪威語| 挪威語配置 pg_catalog | 葡萄牙語 | 葡萄牙語的配置 pg_catalog | 羅馬尼亞語| 羅馬尼亞語配置 pg_catalog | 俄語 | 俄語配置 pg_catalog | 簡單 | 簡單的配置 pg_catalog | 西班牙語 | 西班牙語配置 pg_catalog | 瑞典語 | 瑞典語配置 pg_catalog | 土耳其語 | 土耳其語配置 公共 | 法語 | (17 行)
在這種情況下,應使用以下命令創建觸發器:
CREATE TRIGGER TS_tsv BEFORE INSERT OR UPDATE ON books FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(tsv, 'public.fr', title, authors, descriptionText);