Postgresql postgres中文本搜索查询的构建

Postgresql postgres中文本搜索查询的构建,postgresql,plpgsql,Postgresql,Plpgsql,我需要构建一个存储过程,该存储过程接收varchar数组的输入。它将使用如下语法搜索这些 SELECT * FROM mytable WHERE search_index @@ to_tsquery(' '); 如果我像汤姆,迪克,哈利那样为程序提供信息 查询应该是动态构建的,就像 SELECT * FROM mytable WHERE search_index @@ to_tsquery('tom | dick | harry '); CREATE OR REPLACE FUNCTION

我需要构建一个存储过程,该存储过程接收varchar数组的输入。它将使用如下语法搜索这些

SELECT *
FROM mytable
WHERE search_index @@ to_tsquery(' ');
如果我像汤姆,迪克,哈利那样为程序提供信息 查询应该是动态构建的,就像

SELECT *
FROM mytable
WHERE search_index @@ to_tsquery('tom | dick | harry ');


CREATE OR REPLACE FUNCTION text_search(search_terms character varying[], ent_id bigint)
  RETURNS entity_base AS

$BODY$DECLARE

  result_data entity_base;

  search_data text;
BEGIN

     search_data := array_to_string('search_terms[]', '|');

     SELECT * INTO result_data FROM entity_base WHERE search_index @@ to_tsquery(search_data) and entity_id = ent_id;
     RETURN result_data;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
当我运行这个程序时,我发现了一个错误

ERROR:  could not determine polymorphic type because input has type "unknown"
CONTEXT:  SQL statement "SELECT  array_to_string('search_terms[]', '|')"
PL/pgSQL function "text_search" line 5 at assignment

********** Error **********

ERROR: could not determine polymorphic type because input has type "unknown"
SQL state: 42804
Context: SQL statement "SELECT  array_to_string('search_terms[]', '|')"
PL/pgSQL function "text_search" line 5 at assignment
使用()。

使用数组到字符串(搜索词“|”),不带引号,因为它不是字符串,而是变量。