diff --git a/contrib/tsearch2/tsearch.sql.in b/contrib/tsearch2/tsearch.sql.in deleted file mode 100644 index c4b5cbc5f12..00000000000 --- a/contrib/tsearch2/tsearch.sql.in +++ /dev/null @@ -1,1242 +0,0 @@ -/* $PostgreSQL: pgsql/contrib/tsearch2/tsearch.sql.in,v 1.22 2007/11/13 04:24:29 momjian Exp $ */ - --- Adjust this setting to control where the objects get CREATEd. -SET search_path = public; - ---dict conf -CREATE TABLE pg_ts_dict ( - dict_name text not null primary key, - dict_init regprocedure, - dict_initoption text, - dict_lexize regprocedure not null, - dict_comment text -) with oids; - ---dict interface -CREATE OR REPLACE FUNCTION lexize(oid, text) -RETURNS _text -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION lexize(text, text) - RETURNS _text - as 'MODULE_PATHNAME', 'lexize_byname' - LANGUAGE C - RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION lexize(text) - RETURNS _text - as 'MODULE_PATHNAME', 'lexize_bycurrent' - LANGUAGE C - RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION set_curdict(int) -RETURNS void -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION set_curdict(text) -RETURNS void -as 'MODULE_PATHNAME', 'set_curdict_byname' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - ---built-in dictionaries -CREATE OR REPLACE FUNCTION dex_init(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION dex_lexize(internal,internal,int4) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_dict select - 'simple', - 'dex_init(internal)', - null, - 'dex_lexize(internal,internal,int4)', - 'Simple example of dictionary.' -; - -CREATE OR REPLACE FUNCTION snb_en_init(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION snb_lexize(internal,internal,int4) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_dict select - 'en_stem', - 'snb_en_init(internal)', - 'contrib/english.stop', - 'snb_lexize(internal,internal,int4)', - 'English Stemmer. Snowball.' -; - -CREATE OR REPLACE FUNCTION snb_ru_init_koi8(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -insert into pg_ts_dict select - 'ru_stem_koi8', - 'snb_ru_init_koi8(internal)', - 'contrib/russian.stop', - 'snb_lexize(internal,internal,int4)', - 'Russian Stemmer. Snowball. KOI8 Encoding' -; - -CREATE OR REPLACE FUNCTION snb_ru_init_utf8(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -insert into pg_ts_dict select - 'ru_stem_utf8', - 'snb_ru_init_utf8(internal)', - 'contrib/russian.stop.utf8', - 'snb_lexize(internal,internal,int4)', - 'Russian Stemmer. Snowball. UTF8 Encoding' -; - -CREATE OR REPLACE FUNCTION spell_init(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION spell_lexize(internal,internal,int4) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_dict select - 'ispell_template', - 'spell_init(internal)', - null, - 'spell_lexize(internal,internal,int4)', - 'ISpell interface. Must have .dict and .aff files' -; - -CREATE OR REPLACE FUNCTION syn_init(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION syn_lexize(internal,internal,int4) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_dict select - 'synonym', - 'syn_init(internal)', - null, - 'syn_lexize(internal,internal,int4)', - 'Example of synonym dictionary' -; - -CREATE OR REPLACE FUNCTION thesaurus_init(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION thesaurus_lexize(internal,internal,int4,internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_dict select - 'thesaurus_template', - 'thesaurus_init(internal)', - null, - 'thesaurus_lexize(internal,internal,int4,internal)', - 'Thesaurus template, must be pointed Dictionary and DictFile' -; - ---dict conf -CREATE TABLE pg_ts_parser ( - prs_name text not null primary key, - prs_start regprocedure not null, - prs_nexttoken regprocedure not null, - prs_end regprocedure not null, - prs_headline regprocedure not null, - prs_lextype regprocedure not null, - prs_comment text -) with oids; - ---sql-level interface -CREATE TYPE tokentype - AS (tokid int4, alias text, descr text); - -CREATE OR REPLACE FUNCTION token_type(int4) -RETURNS setof tokentype -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION token_type(text) -RETURNS setof tokentype -as 'MODULE_PATHNAME', 'token_type_byname' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION token_type() -RETURNS setof tokentype -as 'MODULE_PATHNAME', 'token_type_current' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION set_curprs(int) -RETURNS void -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION set_curprs(text) -RETURNS void -as 'MODULE_PATHNAME', 'set_curprs_byname' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE TYPE tokenout - AS (tokid int4, token text); - -CREATE OR REPLACE FUNCTION parse(oid,text) -RETURNS setof tokenout -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION parse(text,text) -RETURNS setof tokenout -as 'MODULE_PATHNAME', 'parse_byname' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION parse(text) -RETURNS setof tokenout -as 'MODULE_PATHNAME', 'parse_current' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - ---default parser -CREATE OR REPLACE FUNCTION prsd_start(internal,int4) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION prsd_getlexeme(internal,internal,internal) -RETURNS int4 -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION prsd_end(internal) -RETURNS void -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION prsd_lextype(internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION prsd_headline(internal,internal,internal) -RETURNS internal -as 'MODULE_PATHNAME' -LANGUAGE C; - -insert into pg_ts_parser select - 'default', - 'prsd_start(internal,int4)', - 'prsd_getlexeme(internal,internal,internal)', - 'prsd_end(internal)', - 'prsd_headline(internal,internal,internal)', - 'prsd_lextype(internal)', - 'Parser from OpenFTS v0.34' -; - ---tsearch config - -CREATE TABLE pg_ts_cfg ( - ts_name text not null primary key, - prs_name text not null, - locale text -) with oids; - -CREATE TABLE pg_ts_cfgmap ( - ts_name text not null, - tok_alias text not null, - dict_name text[], - primary key (ts_name,tok_alias) -) with oids; - -CREATE OR REPLACE FUNCTION set_curcfg(int) -RETURNS void -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION set_curcfg(text) -RETURNS void -as 'MODULE_PATHNAME', 'set_curcfg_byname' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION show_curcfg() -RETURNS oid -as 'MODULE_PATHNAME' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -insert into pg_ts_cfg values ('default', 'default','C'); -insert into pg_ts_cfg values ('default_russian', 'default','ru_RU.KOI8-R'); -insert into pg_ts_cfg values ('utf8_russian', 'default','ru_RU.UTF-8'); -insert into pg_ts_cfg values ('simple', 'default'); - -insert into pg_ts_cfgmap values ('default', 'lword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default', 'nlword', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'word', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'email', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'url', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'host', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'sfloat', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'version', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'part_hword', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'nlpart_hword', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'lpart_hword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default', 'hword', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'lhword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default', 'nlhword', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'uri', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'file', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'float', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'int', '{simple}'); -insert into pg_ts_cfgmap values ('default', 'uint', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'lword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default_russian', 'nlword', '{ru_stem_koi8}'); -insert into pg_ts_cfgmap values ('default_russian', 'word', '{ru_stem_koi8}'); -insert into pg_ts_cfgmap values ('default_russian', 'email', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'url', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'host', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'sfloat', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'version', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'part_hword', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'nlpart_hword', '{ru_stem_koi8}'); -insert into pg_ts_cfgmap values ('default_russian', 'lpart_hword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default_russian', 'hword', '{ru_stem_koi8}'); -insert into pg_ts_cfgmap values ('default_russian', 'lhword', '{en_stem}'); -insert into pg_ts_cfgmap values ('default_russian', 'nlhword', '{ru_stem_koi8}'); -insert into pg_ts_cfgmap values ('default_russian', 'uri', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'file', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'float', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'int', '{simple}'); -insert into pg_ts_cfgmap values ('default_russian', 'uint', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'lword', '{en_stem}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'nlword', '{ru_stem_utf8}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'word', '{ru_stem_utf8}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'email', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'url', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'host', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'sfloat', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'version', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'part_hword', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'nlpart_hword', '{ru_stem_utf8}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'lpart_hword', '{en_stem}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'hword', '{ru_stem_utf8}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'lhword', '{en_stem}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'nlhword', '{ru_stem_utf8}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'uri', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'file', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'float', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'int', '{simple}'); -insert into pg_ts_cfgmap values ('utf8_russian', 'uint', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'lword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'nlword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'word', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'email', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'url', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'host', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'sfloat', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'version', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'part_hword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'nlpart_hword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'lpart_hword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'hword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'lhword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'nlhword', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'uri', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'file', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'float', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'int', '{simple}'); -insert into pg_ts_cfgmap values ('simple', 'uint', '{simple}'); - ---tsvector type -CREATE OR REPLACE FUNCTION tsvector_in(cstring) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION tsvector_out(tsvector) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE TYPE tsvector ( - INTERNALLENGTH = -1, - INPUT = tsvector_in, - OUTPUT = tsvector_out, - STORAGE = extended -); - -CREATE OR REPLACE FUNCTION length(tsvector) -RETURNS int4 -AS 'MODULE_PATHNAME', 'tsvector_length' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION to_tsvector(oid, text) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION to_tsvector(text, text) -RETURNS tsvector -AS 'MODULE_PATHNAME', 'to_tsvector_name' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION to_tsvector(text) -RETURNS tsvector -AS 'MODULE_PATHNAME', 'to_tsvector_current' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION strip(tsvector) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION setweight(tsvector,"char") -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION concat(tsvector,tsvector) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR || ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = concat -); - ---query type -CREATE OR REPLACE FUNCTION tsquery_in(cstring) -RETURNS tsquery -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION tsquery_out(tsquery) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE TYPE tsquery ( - INTERNALLENGTH = -1, - ALIGNMENT = int4, - INPUT = tsquery_in, - OUTPUT = tsquery_out -); - -CREATE OR REPLACE FUNCTION querytree(tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'tsquerytree' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION to_tsquery(oid, text) -RETURNS tsquery -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION to_tsquery(text, text) -RETURNS tsquery -AS 'MODULE_PATHNAME','to_tsquery_name' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION to_tsquery(text) -RETURNS tsquery -AS 'MODULE_PATHNAME','to_tsquery_current' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION plainto_tsquery(oid, text) -RETURNS tsquery -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION plainto_tsquery(text, text) -RETURNS tsquery -AS 'MODULE_PATHNAME','plainto_tsquery_name' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION plainto_tsquery(text) -RETURNS tsquery -AS 'MODULE_PATHNAME','plainto_tsquery_current' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - ---operations -CREATE OR REPLACE FUNCTION exectsq(tsvector, tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -COMMENT ON FUNCTION exectsq(tsvector, tsquery) IS 'boolean operation with text index'; - -CREATE OR REPLACE FUNCTION rexectsq(tsquery, tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -COMMENT ON FUNCTION rexectsq(tsquery, tsvector) IS 'boolean operation with text index'; - -CREATE OPERATOR @@ ( - LEFTARG = tsvector, - RIGHTARG = tsquery, - PROCEDURE = exectsq, - COMMUTATOR = '@@', - RESTRICT = contsel, - JOIN = contjoinsel -); -CREATE OPERATOR @@ ( - LEFTARG = tsquery, - RIGHTARG = tsvector, - PROCEDURE = rexectsq, - COMMUTATOR = '@@', - RESTRICT = contsel, - JOIN = contjoinsel -); - ---Trigger -CREATE OR REPLACE FUNCTION tsearch2() -RETURNS trigger -AS 'MODULE_PATHNAME' -LANGUAGE C; - ---Relevation -CREATE OR REPLACE FUNCTION rank(float4[], tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank(float4[], tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank(tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_def' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank(tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_def' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank_cd(float4[], tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank_cd(float4[], tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank_cd(tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_cd_def' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rank_cd(tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_cd_def' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(oid, text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(oid, text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(text, text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_byname' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(text, text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_byname' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_current' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION headline(text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_current' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - ---GiST ---GiST key type -CREATE OR REPLACE FUNCTION gtsvector_in(cstring) -RETURNS gtsvector -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gtsvector_out(gtsvector) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE TYPE gtsvector ( - INTERNALLENGTH = -1, - INPUT = gtsvector_in, - OUTPUT = gtsvector_out -); - --- support FUNCTIONs -CREATE OR REPLACE FUNCTION gtsvector_consistent(gtsvector,internal,int4) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsvector_compress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsvector_decompress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsvector_penalty(internal,internal,internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gtsvector_picksplit(internal, internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsvector_union(internal, internal) -RETURNS _int4 -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsvector_same(gtsvector, gtsvector, internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - --- CREATE the OPERATOR class -CREATE OPERATOR CLASS gist_tsvector_ops -DEFAULT FOR TYPE tsvector USING gist -AS - OPERATOR 1 @@ (tsvector, tsquery) RECHECK , - FUNCTION 1 gtsvector_consistent (gtsvector, internal, int4), - FUNCTION 2 gtsvector_union (internal, internal), - FUNCTION 3 gtsvector_compress (internal), - FUNCTION 4 gtsvector_decompress (internal), - FUNCTION 5 gtsvector_penalty (internal, internal, internal), - FUNCTION 6 gtsvector_picksplit (internal, internal), - FUNCTION 7 gtsvector_same (gtsvector, gtsvector, internal), - STORAGE gtsvector; - - ---stat info -CREATE TYPE statinfo - AS (word text, ndoc int4, nentry int4); - ---CREATE OR REPLACE FUNCTION tsstat_in(cstring) ---RETURNS tsstat ---AS 'MODULE_PATHNAME' ---LANGUAGE C RETURNS NULL ON NULL INPUT; --- ---CREATE OR REPLACE FUNCTION tsstat_out(tsstat) ---RETURNS cstring ---AS 'MODULE_PATHNAME' ---LANGUAGE C RETURNS NULL ON NULL INPUT; --- ---CREATE TYPE tsstat ( --- INTERNALLENGTH = -1, --- INPUT = tsstat_in, --- OUTPUT = tsstat_out, --- STORAGE = plain ---); --- ---CREATE OR REPLACE FUNCTION ts_accum(tsstat,tsvector) ---RETURNS tsstat ---AS 'MODULE_PATHNAME' ---LANGUAGE C RETURNS NULL ON NULL INPUT; --- ---CREATE OR REPLACE FUNCTION ts_accum_finish(tsstat) --- RETURNS setof statinfo --- as 'MODULE_PATHNAME' --- LANGUAGE C --- RETURNS NULL ON NULL INPUT; --- ---CREATE AGGREGATE stat ( --- BASETYPE=tsvector, --- SFUNC=ts_accum, --- STYPE=tsstat, --- FINALFUNC = ts_accum_finish, --- initcond = '' ---); - -CREATE OR REPLACE FUNCTION stat(text) -RETURNS setof statinfo -as 'MODULE_PATHNAME', 'ts_stat' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION stat(text,text) -RETURNS setof statinfo -as 'MODULE_PATHNAME', 'ts_stat' -LANGUAGE C -RETURNS NULL ON NULL INPUT; - ---reset - just for debuging -CREATE OR REPLACE FUNCTION reset_tsearch() - RETURNS void - as 'MODULE_PATHNAME' - LANGUAGE C - RETURNS NULL ON NULL INPUT; - ---get cover (debug for rank_cd) -CREATE OR REPLACE FUNCTION get_covers(tsvector,tsquery) - RETURNS text - as 'MODULE_PATHNAME' - LANGUAGE C - RETURNS NULL ON NULL INPUT; - ---debug function -create type tsdebug as ( - ts_name text, - tok_type text, - description text, - token text, - dict_name text[], - "tsvector" tsvector -); - -CREATE OR REPLACE FUNCTION _get_parser_from_curcfg() -RETURNS text as -' select prs_name from pg_ts_cfg where oid = show_curcfg() ' -LANGUAGE SQL RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION ts_debug(text) -RETURNS setof tsdebug as ' -select - m.ts_name, - t.alias as tok_type, - t.descr as description, - p.token, - m.dict_name, - strip(to_tsvector(p.token)) as tsvector -from - parse( _get_parser_from_curcfg(), $1 ) as p, - token_type() as t, - pg_ts_cfgmap as m, - pg_ts_cfg as c -where - t.tokid=p.tokid and - t.alias = m.tok_alias and - m.ts_name=c.ts_name and - c.oid=show_curcfg() -' LANGUAGE SQL RETURNS NULL ON NULL INPUT; - ---compare functions -CREATE OR REPLACE FUNCTION tsvector_cmp(tsvector,tsvector) -RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_lt(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_le(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_eq(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_ge(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_gt(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsvector_ne(tsvector,tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR < ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_lt, - COMMUTATOR = '>', - NEGATOR = '>=', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR <= ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_le, - COMMUTATOR = '>=', - NEGATOR = '>', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR >= ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_ge, - COMMUTATOR = '<=', - NEGATOR = '<', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR > ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_gt, - COMMUTATOR = '<', - NEGATOR = '<=', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR = ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_eq, - COMMUTATOR = '=', - NEGATOR = '<>', - RESTRICT = eqsel, - JOIN = eqjoinsel, - SORT1 = '<', - SORT2 = '<' -); - -CREATE OPERATOR <> ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = tsvector_ne, - COMMUTATOR = '<>', - NEGATOR = '=', - RESTRICT = neqsel, - JOIN = neqjoinsel -); - -CREATE OPERATOR CLASS tsvector_ops - DEFAULT FOR TYPE tsvector USING btree AS - OPERATOR 1 < , - OPERATOR 2 <= , - OPERATOR 3 = , - OPERATOR 4 >= , - OPERATOR 5 > , - FUNCTION 1 tsvector_cmp(tsvector, tsvector); - -----------------Compare functions and operators for tsquery -CREATE OR REPLACE FUNCTION tsquery_cmp(tsquery,tsquery) -RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_lt(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_le(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_eq(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_ge(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_gt(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_ne(tsquery,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE; - - -CREATE OPERATOR < ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_lt, - COMMUTATOR = '>', - NEGATOR = '>=', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR <= ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_le, - COMMUTATOR = '>=', - NEGATOR = '>', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR >= ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_ge, - COMMUTATOR = '<=', - NEGATOR = '<', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR > ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_gt, - COMMUTATOR = '<', - NEGATOR = '<=', - RESTRICT = contsel, - JOIN = contjoinsel -); - - -CREATE OPERATOR = ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_eq, - COMMUTATOR = '=', - NEGATOR = '<>', - RESTRICT = eqsel, - JOIN = eqjoinsel, - SORT1 = '<', - SORT2 = '<' -); - -CREATE OPERATOR <> ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_ne, - COMMUTATOR = '<>', - NEGATOR = '=', - RESTRICT = neqsel, - JOIN = neqjoinsel -); - -CREATE OPERATOR CLASS tsquery_ops - DEFAULT FOR TYPE tsquery USING btree AS - OPERATOR 1 < , - OPERATOR 2 <= , - OPERATOR 3 = , - OPERATOR 4 >= , - OPERATOR 5 > , - FUNCTION 1 tsquery_cmp(tsquery, tsquery); - -CREATE OR REPLACE FUNCTION numnode(tsquery) - RETURNS int4 - as 'MODULE_PATHNAME', 'tsquery_numnode' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsquery_and(tsquery,tsquery) - RETURNS tsquery - as 'MODULE_PATHNAME', 'tsquery_and' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR && ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_and, - COMMUTATOR = '&&', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OR REPLACE FUNCTION tsquery_or(tsquery,tsquery) - RETURNS tsquery - as 'MODULE_PATHNAME', 'tsquery_or' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR || ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsquery_or, - COMMUTATOR = '||', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OR REPLACE FUNCTION tsquery_not(tsquery) - RETURNS tsquery - as 'MODULE_PATHNAME', 'tsquery_not' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR !! ( - RIGHTARG = tsquery, - PROCEDURE = tsquery_not -); - ---------------rewrite subsystem - -CREATE OR REPLACE FUNCTION rewrite(tsquery, text) - RETURNS tsquery - as 'MODULE_PATHNAME', 'tsquery_rewrite' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rewrite(tsquery, tsquery, tsquery) - RETURNS tsquery - as 'MODULE_PATHNAME', 'tsquery_rewrite_query' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION rewrite_accum(tsquery,tsquery[]) - RETURNS tsquery - AS 'MODULE_PATHNAME' - LANGUAGE C; - -CREATE OR REPLACE FUNCTION rewrite_finish(tsquery) - RETURNS tsquery - as 'MODULE_PATHNAME' - LANGUAGE C; - -CREATE AGGREGATE rewrite ( - BASETYPE=tsquery[], - SFUNC=rewrite_accum, - STYPE=tsquery, - FINALFUNC = rewrite_finish -); - -CREATE OR REPLACE FUNCTION tsq_mcontains(tsquery, tsquery) - RETURNS bool - as 'MODULE_PATHNAME' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OR REPLACE FUNCTION tsq_mcontained(tsquery, tsquery) - RETURNS bool - as 'MODULE_PATHNAME' - LANGUAGE C - RETURNS NULL ON NULL INPUT IMMUTABLE; - -CREATE OPERATOR @> ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsq_mcontains, - COMMUTATOR = '<@', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR <@ ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsq_mcontained, - COMMUTATOR = '@>', - RESTRICT = contsel, - JOIN = contjoinsel -); - --- obsolete: -CREATE OPERATOR @ ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsq_mcontains, - COMMUTATOR = '~', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR ~ ( - LEFTARG = tsquery, - RIGHTARG = tsquery, - PROCEDURE = tsq_mcontained, - COMMUTATOR = '@', - RESTRICT = contsel, - JOIN = contjoinsel -); - ------------gist support of rewrite------------------ - -CREATE OR REPLACE FUNCTION gtsq_in(cstring) -RETURNS gtsq -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gtsq_out(gtsq) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE TYPE gtsq ( - INTERNALLENGTH = 8, - INPUT = gtsq_in, - OUTPUT = gtsq_out -); - -CREATE OR REPLACE FUNCTION gtsq_consistent(gtsq,internal,int4) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsq_compress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsq_decompress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsq_penalty(internal,internal,internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gtsq_picksplit(internal, internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsq_union(bytea, internal) -RETURNS _int4 -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OR REPLACE FUNCTION gtsq_same(gtsq, gtsq, internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C; - -CREATE OPERATOR CLASS gist_tp_tsquery_ops -DEFAULT FOR TYPE tsquery USING gist -AS - OPERATOR 7 @> (tsquery, tsquery) RECHECK, - OPERATOR 8 <@ (tsquery, tsquery) RECHECK, - OPERATOR 13 @ (tsquery, tsquery) RECHECK, - OPERATOR 14 ~ (tsquery, tsquery) RECHECK, - FUNCTION 1 gtsq_consistent (gtsq, internal, int4), - FUNCTION 2 gtsq_union (bytea, internal), - FUNCTION 3 gtsq_compress (internal), - FUNCTION 4 gtsq_decompress (internal), - FUNCTION 5 gtsq_penalty (internal, internal, internal), - FUNCTION 6 gtsq_picksplit (internal, internal), - FUNCTION 7 gtsq_same (gtsq, gtsq, internal), - STORAGE gtsq; - ---GIN support function -CREATE OR REPLACE FUNCTION gin_extract_tsvector(tsvector,internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gin_extract_tsquery(tsquery,internal,internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OR REPLACE FUNCTION gin_ts_consistent(internal,internal,tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE C RETURNS NULL ON NULL INPUT; - -CREATE OPERATOR @@@ ( - LEFTARG = tsvector, - RIGHTARG = tsquery, - PROCEDURE = exectsq, - COMMUTATOR = '@@@', - RESTRICT = contsel, - JOIN = contjoinsel -); -CREATE OPERATOR @@@ ( - LEFTARG = tsquery, - RIGHTARG = tsvector, - PROCEDURE = rexectsq, - COMMUTATOR = '@@@', - RESTRICT = contsel, - JOIN = contjoinsel -); - -CREATE OPERATOR CLASS gin_tsvector_ops -DEFAULT FOR TYPE tsvector USING gin -AS - OPERATOR 1 @@ (tsvector, tsquery), - OPERATOR 2 @@@ (tsvector, tsquery) RECHECK, - FUNCTION 1 bttextcmp(text, text), - FUNCTION 2 gin_extract_tsvector(tsvector,internal), - FUNCTION 3 gin_extract_tsquery(tsquery,internal,internal), - FUNCTION 4 gin_ts_consistent(internal,internal,tsquery), - STORAGE text; - - ---example of ISpell dictionary ---update pg_ts_dict set dict_initoption='DictFile="/usr/local/share/ispell/russian.dict" ,AffFile ="/usr/local/share/ispell/russian.aff", StopFile="/usr/local/share/ispell/russian.stop"' where dict_name='ispell_template'; - ---example of synonym dict ---update pg_ts_dict set dict_initoption='/usr/local/share/ispell/english.syn' where dict_name='synonym'; - ---example of thesaurus dict ---update pg_ts_dict set dict_initoption='DictFile="contrib/thesaurus", Dictionary="en_stem"' where dict_name='thesaurus_template'; ---update pg_ts_cfgmap set dict_name = '{thesaurus_template,en_stem}' where dict_name = '{en_stem}';