diff --git a/pgroonga.sql b/pgroonga.sql
index 05de77d..358bc34 100644
--- a/pgroonga.sql
+++ b/pgroonga.sql
@@ -430,12 +430,25 @@ CREATE FUNCTION pgroonga.match_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.match_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_match_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &@ (
PROCEDURE = pgroonga.match_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &@ (
+ PROCEDURE = pgroonga.match_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.query_text(text, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_query_text'
@@ -443,12 +456,25 @@ CREATE FUNCTION pgroonga.query_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.query_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_query_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &? (
PROCEDURE = pgroonga.query_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &? (
+ PROCEDURE = pgroonga.query_text_array,
+ LEFTARG = text[[,
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.similar_text(text, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_similar_text'
@@ -456,12 +482,25 @@ CREATE FUNCTION pgroonga.similar_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.similar_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_similar_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &~? (
PROCEDURE = pgroonga.similar_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &~? (
+ PROCEDURE = pgroonga.similar_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.prefix_text(text, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_prefix_text'
@@ -469,12 +508,25 @@ CREATE FUNCTION pgroonga.prefix_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.prefix_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_prefix_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &^ (
PROCEDURE = pgroonga.prefix_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &^ (
+ PROCEDURE = pgroonga.prefix_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.prefix_rk_text(text, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_text'
@@ -482,12 +534,25 @@ CREATE FUNCTION pgroonga.prefix_rk_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.prefix_rk_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &^~ (
PROCEDURE = pgroonga.prefix_rk_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &^~ (
+ PROCEDURE = pgroonga.prefix_rk_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.script_text(text, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_script_text'
@@ -495,12 +560,25 @@ CREATE FUNCTION pgroonga.script_text(text, text)
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.script_text_array(text[], text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_script_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &` (
PROCEDURE = pgroonga.script_text,
LEFTARG = text,
RIGHTARG = text
);
+CREATE OPERATOR &` (
+ PROCEDURE = pgroonga.script_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text
+);
+
CREATE FUNCTION pgroonga.match_contain_text(text, text[])
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_match_contain_text'
@@ -508,12 +586,25 @@ CREATE FUNCTION pgroonga.match_contain_text(text, text[])
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.match_contain_text_array(text[], text[])
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_match_contain_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &@> (
PROCEDURE = pgroonga.match_contain_text,
LEFTARG = text,
RIGHTARG = text[]
);
+CREATE OPERATOR &@> (
+ PROCEDURE = pgroonga.match_contain_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text[]
+);
+
CREATE FUNCTION pgroonga.query_contain_text(text, text[])
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_query_contain_text'
@@ -521,12 +612,25 @@ CREATE FUNCTION pgroonga.query_contain_text(text, text[])
IMMUTABLE
STRICT;
+CREATE FUNCTION pgroonga.query_contain_text_array(text[], text[])
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'pgroonga_query_contain_text_array'
+ LANGUAGE C
+ IMMUTABLE
+ STRICT;
+
CREATE OPERATOR &?> (
PROCEDURE = pgroonga.query_contain_text,
LEFTARG = text,
RIGHTARG = text[]
);
+CREATE OPERATOR &?> (
+ PROCEDURE = pgroonga.query_contain_text_array,
+ LEFTARG = text[],
+ RIGHTARG = text[]
+);
+
CREATE FUNCTION pgroonga.prefix_contain_text_array(text[], text)
RETURNS bool
AS 'MODULE_PATHNAME', 'pgroonga_prefix_contain_text_array'
@@ -564,6 +668,15 @@ CREATE OPERATOR CLASS pgroonga.text_full_text_search_ops_v2 FOR TYPE text
OPERATOR 18 &@> (text, text[]),
OPERATOR 19 &?> (text, text[]);
+CREATE OPERATOR CLASS pgroonga.text_array_full_text_search_ops_v2 FOR TYPE text[]
+ USING pgroonga AS
+ OPERATOR 12 &@ (text[], text),
+ OPERATOR 13 &? (text[], text),
+ OPERATOR 14 &~? (text[], text),
+ OPERATOR 15 &` (text[], text),
+ OPERATOR 18 &@> (text[], text[]),
+ OPERATOR 19 &?> (text[], text[]);
+
CREATE OPERATOR CLASS pgroonga.text_term_search_ops_v2 FOR TYPE text
USING pgroonga AS
OPERATOR 16 &^,