【发布时间】:2020-12-18 16:09:16
【问题描述】:
目标:
- 使用 PostgreSQL FTS 创建全文搜索引擎。
填充tsvector:
我有一个 tsvector 列。 为了填充 tsvector 列,我正在执行一个触发器,该触发器调用一个执行自定义 PL/Python 函数的过程。
后续步骤:
触发器和过程函数
它类似于 https://www.postgresql.org/docs/10/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS 触发器,它调用 messages_trigger 过程(用 plpgsql 编写)。
但是,我调用的不是coalesce(new.title,'') 和coalesce(new.body,''),而是UDF,它具有ARRAY 文本作为输入参数。
custom_udf(p_arr ARRAY)
错误:
在摄取数据期间,它会抛出错误:
psycopg2.errors.UndefinedObject: type p_arr[] does not exist
问题:
Pl/Python 函数是否不允许使用ARRAY 类型参数?
为了绕过这个问题,我正在对列表元素进行逗号分隔连接并将其传递给 custom_udf。在 custom_udf 中,我使用逗号分隔符拆分来取回列表。
【问题讨论】:
标签: python postgresql plpython postgres-plpython