From 3d0d78ce2f4b55079e90af30132b9f7a1698f0c8 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 23 Aug 2003 04:25:29 +0000 Subject: Bring the makefiles up to our conventions. --- contrib/tsearch2/Makefile | 22 +- contrib/tsearch2/ispell/Makefile | 7 +- contrib/tsearch2/snowball/Makefile | 7 +- contrib/tsearch2/tsearch.sql._in | 710 ----------------------------------- contrib/tsearch2/tsearch.sql.in | 710 +++++++++++++++++++++++++++++++++++ contrib/tsearch2/wordparser/Makefile | 7 +- 6 files changed, 729 insertions(+), 734 deletions(-) delete mode 100644 contrib/tsearch2/tsearch.sql._in create mode 100644 contrib/tsearch2/tsearch.sql.in diff --git a/contrib/tsearch2/Makefile b/contrib/tsearch2/Makefile index 6df6bcf3ba..d689df0f0a 100644 --- a/contrib/tsearch2/Makefile +++ b/contrib/tsearch2/Makefile @@ -1,10 +1,10 @@ +# $Header: /cvsroot/pgsql/contrib/tsearch2/Makefile,v 1.4 2003/08/23 04:25:28 petere Exp $ + subdir = contrib/tsearch2 top_builddir = ../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I$(srcdir) -I$(srcdir)/snowball -I$(srcdir)/ispell -I$(srcdir)/wordparser $(CPPFLAGS) - MODULE_big = tsearch2 OBJS = dict_ex.o dict.o snmap.o stopword.o common.o prs_dcfg.o \ dict_snowball.o dict_ispell.o dict_syn.o \ @@ -22,6 +22,9 @@ $(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ; $(SUBDIRS:%=%-recursive): $(MAKE) -C $(subst -recursive,,$@) SUBSYS.o +PG_CPPFLAGS = -I$(srcdir)/snowball -I$(srcdir)/ispell -I$(srcdir)/wordparser + +DATA = stopword/english.stop stopword/russian.stop DATA_built = tsearch2.sql untsearch2.sql DOCS = README.tsearch2 REGRESS = tsearch2 @@ -29,23 +32,18 @@ REGRESS = tsearch2 EXTRA_CLEAN = tsearch2.sql.in SHLIB_LINK := -lm -include $(top_srcdir)/contrib/contrib-global.mk -# DO NOT DELETE -install: installstop - -installstop: - cp $(srcdir)/stopword/*.stop $(datadir) - - -tsearch2.sql.in: tsearch.sql._in - sed 's,DATA_PATH,$(datadir),g' < $< > $@ +tsearch2.sql: tsearch.sql.in + sed -e 's,MODULE_PATHNAME,$$libdir/$*,g' \ + -e 's,DATA_PATH,$(datadir)/contrib,g' $< >$@ untsearch2.sql: untsearch.sql.in cp $< $@ +.PHONY: subclean clean: subclean subclean: for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean || exit; done +include $(top_srcdir)/contrib/contrib-global.mk diff --git a/contrib/tsearch2/ispell/Makefile b/contrib/tsearch2/ispell/Makefile index 5532359b1c..fcc61a2c58 100644 --- a/contrib/tsearch2/ispell/Makefile +++ b/contrib/tsearch2/ispell/Makefile @@ -1,9 +1,11 @@ +# $Header: /cvsroot/pgsql/contrib/tsearch2/ispell/Attic/Makefile,v 1.4 2003/08/23 04:25:29 petere Exp $ + subdir = contrib/tsearch2/ispell top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I$(srcdir) -I$(srcdir)/.. $(CPPFLAGS) +PG_CPPFLAGS = -I$(srcdir)/.. $(CPPFLAGS) override CFLAGS += $(CFLAGS_SL) SUBOBJS = spell.o @@ -16,6 +18,3 @@ SUBSYS.o: $(SUBOBJS) EXTRA_CLEAN = SUBSYS.o $(SUBOBJS) include $(top_srcdir)/contrib/contrib-global.mk -# DO NOT DELETE - - diff --git a/contrib/tsearch2/snowball/Makefile b/contrib/tsearch2/snowball/Makefile index 156b1b3d39..442b1b3b75 100644 --- a/contrib/tsearch2/snowball/Makefile +++ b/contrib/tsearch2/snowball/Makefile @@ -1,9 +1,11 @@ +# $Header: /cvsroot/pgsql/contrib/tsearch2/snowball/Attic/Makefile,v 1.4 2003/08/23 04:25:29 petere Exp $ + subdir = contrib/tsearch2/snowball top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I$(srcdir) -I$(srcdir)/.. $(CPPFLAGS) +PG_CPPFLAGS = -I$(srcdir)/.. override CFLAGS += $(CFLAGS_SL) SUBOBJS = english_stem.o api.o russian_stem.o utilities.o @@ -16,6 +18,3 @@ SUBSYS.o: $(SUBOBJS) EXTRA_CLEAN = SUBSYS.o $(SUBOBJS) include $(top_srcdir)/contrib/contrib-global.mk -# DO NOT DELETE - - diff --git a/contrib/tsearch2/tsearch.sql._in b/contrib/tsearch2/tsearch.sql._in deleted file mode 100644 index de75a5bc64..0000000000 --- a/contrib/tsearch2/tsearch.sql._in +++ /dev/null @@ -1,710 +0,0 @@ --- Adjust this setting to control where the objects get CREATEd. -SET search_path = public; - -BEGIN; - ---dict conf -CREATE TABLE pg_ts_dict ( - dict_name text not null primary key, - dict_init oid, - dict_initoption text, - dict_lexize oid not null, - dict_comment text -) with oids; - ---dict interface -CREATE FUNCTION lexize(oid, text) - returns _text - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION lexize(text, text) - returns _text - as 'MODULE_PATHNAME', 'lexize_byname' - language 'C' - with (isstrict); - -CREATE FUNCTION lexize(text) - returns _text - as 'MODULE_PATHNAME', 'lexize_bycurrent' - language 'C' - with (isstrict); - -CREATE FUNCTION set_curdict(int) - returns void - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION set_curdict(text) - returns void - as 'MODULE_PATHNAME', 'set_curdict_byname' - language 'C' - with (isstrict); - ---built-in dictionaries -CREATE FUNCTION dex_init(text) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION dex_lexize(internal,internal,int4) - returns internal - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -insert into pg_ts_dict select - 'simple', - (select oid from pg_proc where proname='dex_init'), - null, - (select oid from pg_proc where proname='dex_lexize'), - 'Simple example of dictionary.' -; - -CREATE FUNCTION snb_en_init(text) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION snb_lexize(internal,internal,int4) - returns internal - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -insert into pg_ts_dict select - 'en_stem', - (select oid from pg_proc where proname='snb_en_init'), - 'DATA_PATH/english.stop', - (select oid from pg_proc where proname='snb_lexize'), - 'English Stemmer. Snowball.' -; - -CREATE FUNCTION snb_ru_init(text) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -insert into pg_ts_dict select - 'ru_stem', - (select oid from pg_proc where proname='snb_ru_init'), - 'DATA_PATH/russian.stop', - (select oid from pg_proc where proname='snb_lexize'), - 'Russian Stemmer. Snowball.' -; - -CREATE FUNCTION spell_init(text) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION spell_lexize(internal,internal,int4) - returns internal - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -insert into pg_ts_dict select - 'ispell_template', - (select oid from pg_proc where proname='spell_init'), - null, - (select oid from pg_proc where proname='spell_lexize'), - 'ISpell interface. Must have .dict and .aff files' -; - -CREATE FUNCTION syn_init(text) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION syn_lexize(internal,internal,int4) - returns internal - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -insert into pg_ts_dict select - 'synonym', - (select oid from pg_proc where proname='syn_init'), - null, - (select oid from pg_proc where proname='syn_lexize'), - 'Example of synonym dictionary' -; - ---dict conf -CREATE TABLE pg_ts_parser ( - prs_name text not null primary key, - prs_start oid not null, - prs_nexttoken oid not null, - prs_end oid not null, - prs_headline oid not null, - prs_lextype oid not null, - prs_comment text -) with oids; - ---sql-level interface -CREATE TYPE tokentype - as (tokid int4, alias text, descr text); - -CREATE FUNCTION token_type(int4) - returns setof tokentype - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION token_type(text) - returns setof tokentype - as 'MODULE_PATHNAME', 'token_type_byname' - language 'C' - with (isstrict); - -CREATE FUNCTION token_type() - returns setof tokentype - as 'MODULE_PATHNAME', 'token_type_current' - language 'C' - with (isstrict); - -CREATE FUNCTION set_curprs(int) - returns void - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION set_curprs(text) - returns void - as 'MODULE_PATHNAME', 'set_curprs_byname' - language 'C' - with (isstrict); - -CREATE TYPE tokenout - as (tokid int4, token text); - -CREATE FUNCTION parse(oid,text) - returns setof tokenout - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION parse(text,text) - returns setof tokenout - as 'MODULE_PATHNAME', 'parse_byname' - language 'C' - with (isstrict); - -CREATE FUNCTION parse(text) - returns setof tokenout - as 'MODULE_PATHNAME', 'parse_current' - language 'C' - with (isstrict); - ---default parser -CREATE FUNCTION prsd_start(internal,int4) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION prsd_getlexeme(internal,internal,internal) - returns int4 - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION prsd_end(internal) - returns void - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION prsd_lextype(internal) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -CREATE FUNCTION prsd_headline(internal,internal,internal) - returns internal - as 'MODULE_PATHNAME' - language 'C'; - -insert into pg_ts_parser select - 'default', - (select oid from pg_proc where proname='prsd_start'), - (select oid from pg_proc where proname='prsd_getlexeme'), - (select oid from pg_proc where proname='prsd_end'), - (select oid from pg_proc where proname='prsd_headline'), - (select oid from pg_proc where proname='prsd_lextype'), - '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 FUNCTION set_curcfg(int) - returns void - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -CREATE FUNCTION set_curcfg(text) - returns void - as 'MODULE_PATHNAME', 'set_curcfg_byname' - language 'C' - with (isstrict); - -CREATE FUNCTION show_curcfg() - returns oid - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - -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 ('simple', 'default'); - -copy pg_ts_cfgmap from stdin; -default lword {en_stem} -default nlword {simple} -default word {simple} -default email {simple} -default url {simple} -default host {simple} -default sfloat {simple} -default version {simple} -default part_hword {simple} -default nlpart_hword {simple} -default lpart_hword {en_stem} -default hword {simple} -default lhword {en_stem} -default nlhword {simple} -default uri {simple} -default file {simple} -default float {simple} -default int {simple} -default uint {simple} -default_russian lword {en_stem} -default_russian nlword {ru_stem} -default_russian word {ru_stem} -default_russian email {simple} -default_russian url {simple} -default_russian host {simple} -default_russian sfloat {simple} -default_russian version {simple} -default_russian part_hword {simple} -default_russian nlpart_hword {ru_stem} -default_russian lpart_hword {en_stem} -default_russian hword {ru_stem} -default_russian lhword {en_stem} -default_russian nlhword {ru_stem} -default_russian uri {simple} -default_russian file {simple} -default_russian float {simple} -default_russian int {simple} -default_russian uint {simple} -simple lword {simple} -simple nlword {simple} -simple word {simple} -simple email {simple} -simple url {simple} -simple host {simple} -simple sfloat {simple} -simple version {simple} -simple part_hword {simple} -simple nlpart_hword {simple} -simple lpart_hword {simple} -simple hword {simple} -simple lhword {simple} -simple nlhword {simple} -simple uri {simple} -simple file {simple} -simple float {simple} -simple int {simple} -simple uint {simple} -\. - ---tsvector type -CREATE FUNCTION tsvector_in(cstring) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE FUNCTION tsvector_out(tsvector) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE TYPE tsvector ( - INTERNALLENGTH = -1, - INPUT = tsvector_in, - OUTPUT = tsvector_out, - STORAGE = extended -); - -CREATE FUNCTION length(tsvector) -RETURNS int4 -AS 'MODULE_PATHNAME', 'tsvector_length' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION to_tsvector(oid, text) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION to_tsvector(text, text) -RETURNS tsvector -AS 'MODULE_PATHNAME', 'to_tsvector_name' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION to_tsvector(text) -RETURNS tsvector -AS 'MODULE_PATHNAME', 'to_tsvector_current' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION strip(tsvector) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION setweight(tsvector,"char") -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE FUNCTION concat(tsvector,tsvector) -RETURNS tsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict,iscachable); - -CREATE OPERATOR || ( - LEFTARG = tsvector, - RIGHTARG = tsvector, - PROCEDURE = concat -); - ---query type -CREATE FUNCTION tsquery_in(cstring) -RETURNS tsquery -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE FUNCTION tsquery_out(tsquery) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE TYPE tsquery ( - INTERNALLENGTH = -1, - INPUT = tsquery_in, - OUTPUT = tsquery_out -); - -CREATE FUNCTION querytree(tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'tsquerytree' -LANGUAGE 'C' with (isstrict); - -CREATE FUNCTION to_tsquery(oid, text) -RETURNS tsquery -AS 'MODULE_PATHNAME' -LANGUAGE 'c' with (isstrict,iscachable); - -CREATE FUNCTION to_tsquery(text, text) -RETURNS tsquery -AS 'MODULE_PATHNAME','to_tsquery_name' -LANGUAGE 'c' with (isstrict,iscachable); - -CREATE FUNCTION to_tsquery(text) -RETURNS tsquery -AS 'MODULE_PATHNAME','to_tsquery_current' -LANGUAGE 'c' with (isstrict,iscachable); - ---operations -CREATE FUNCTION exectsq(tsvector, tsquery) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict, iscachable); - -COMMENT ON FUNCTION exectsq(tsvector, tsquery) IS 'boolean operation with text index'; - -CREATE FUNCTION rexectsq(tsquery, tsvector) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict, iscachable); - -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 FUNCTION tsearch2() -RETURNS trigger -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - ---Relevation -CREATE FUNCTION rank(float4[], tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank(float4[], tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank(tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_def' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank(tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_def' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank_cd(int4, tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank_cd(int4, tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank_cd(tsvector, tsquery) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_cd_def' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION rank_cd(tsvector, tsquery, int4) -RETURNS float4 -AS 'MODULE_PATHNAME', 'rank_cd_def' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(oid, text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(oid, text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(text, text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_byname' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(text, text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_byname' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(text, tsquery, text) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_current' -LANGUAGE 'C' WITH (isstrict, iscachable); - -CREATE FUNCTION headline(text, tsquery) -RETURNS text -AS 'MODULE_PATHNAME', 'headline_current' -LANGUAGE 'C' WITH (isstrict, iscachable); - ---GiST ---GiST key type -CREATE FUNCTION gtsvector_in(cstring) -RETURNS gtsvector -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE FUNCTION gtsvector_out(gtsvector) -RETURNS cstring -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE TYPE gtsvector ( - INTERNALLENGTH = -1, - INPUT = gtsvector_in, - OUTPUT = gtsvector_out -); - --- support FUNCTIONs -CREATE FUNCTION gtsvector_consistent(gtsvector,internal,int4) -RETURNS bool -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - -CREATE FUNCTION gtsvector_compress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - -CREATE FUNCTION gtsvector_decompress(internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - -CREATE FUNCTION gtsvector_penalty(internal,internal,internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE 'C' with (isstrict); - -CREATE FUNCTION gtsvector_picksplit(internal, internal) -RETURNS internal -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - -CREATE FUNCTION gtsvector_union(bytea, internal) -RETURNS _int4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; - -CREATE 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 (bytea, 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); - ---REATE FUNCTION tsstat_in(cstring) ---RETURNS tsstat ---AS 'MODULE_PATHNAME' ---LANGUAGE 'C' with (isstrict); --- ---CREATE FUNCTION tsstat_out(tsstat) ---RETURNS cstring ---AS 'MODULE_PATHNAME' ---LANGUAGE 'C' with (isstrict); --- ---CREATE TYPE tsstat ( --- INTERNALLENGTH = -1, --- INPUT = tsstat_in, --- OUTPUT = tsstat_out, --- STORAGE = plain ---); --- ---CREATE FUNCTION ts_accum(tsstat,tsvector) ---RETURNS tsstat ---AS 'MODULE_PATHNAME' ---LANGUAGE 'C' with (isstrict); --- ---CREATE FUNCTION ts_accum_finish(tsstat) --- returns setof statinfo --- as 'MODULE_PATHNAME' --- language 'C' --- with (isstrict); --- ---CREATE AGGREGATE stat ( --- BASETYPE=tsvector, --- SFUNC=ts_accum, --- STYPE=tsstat, --- FINALFUNC = ts_accum_finish, --- initcond = '' ---); - -CREATE FUNCTION stat(text) - returns setof statinfo - as 'MODULE_PATHNAME', 'ts_stat' - language 'C' - with (isstrict); - ---reset - just for debuging -CREATE FUNCTION reset_tsearch() - returns void - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - ---get cover (debug for rank_cd) -CREATE FUNCTION get_covers(tsvector,tsquery) - returns text - as 'MODULE_PATHNAME' - language 'C' - with (isstrict); - ---debug function -create type tsdebug as ( - ts_name text, - tok_type text, - description text, - token text, - dict_name text[], - "tsvector" tsvector -); - -create function _get_parser_from_curcfg() -returns text as -' select prs_name from pg_ts_cfg where oid = show_curcfg() ' -language 'SQL' with(isstrict,iscachable); - -create 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' with(isstrict); - - ---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_id=4; ---example of synonym dict ---update pg_ts_dict set dict_initoption='/usr/local/share/ispell/english.syn' where dict_id=5; -END; diff --git a/contrib/tsearch2/tsearch.sql.in b/contrib/tsearch2/tsearch.sql.in new file mode 100644 index 0000000000..de75a5bc64 --- /dev/null +++ b/contrib/tsearch2/tsearch.sql.in @@ -0,0 +1,710 @@ +-- Adjust this setting to control where the objects get CREATEd. +SET search_path = public; + +BEGIN; + +--dict conf +CREATE TABLE pg_ts_dict ( + dict_name text not null primary key, + dict_init oid, + dict_initoption text, + dict_lexize oid not null, + dict_comment text +) with oids; + +--dict interface +CREATE FUNCTION lexize(oid, text) + returns _text + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION lexize(text, text) + returns _text + as 'MODULE_PATHNAME', 'lexize_byname' + language 'C' + with (isstrict); + +CREATE FUNCTION lexize(text) + returns _text + as 'MODULE_PATHNAME', 'lexize_bycurrent' + language 'C' + with (isstrict); + +CREATE FUNCTION set_curdict(int) + returns void + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION set_curdict(text) + returns void + as 'MODULE_PATHNAME', 'set_curdict_byname' + language 'C' + with (isstrict); + +--built-in dictionaries +CREATE FUNCTION dex_init(text) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION dex_lexize(internal,internal,int4) + returns internal + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +insert into pg_ts_dict select + 'simple', + (select oid from pg_proc where proname='dex_init'), + null, + (select oid from pg_proc where proname='dex_lexize'), + 'Simple example of dictionary.' +; + +CREATE FUNCTION snb_en_init(text) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION snb_lexize(internal,internal,int4) + returns internal + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +insert into pg_ts_dict select + 'en_stem', + (select oid from pg_proc where proname='snb_en_init'), + 'DATA_PATH/english.stop', + (select oid from pg_proc where proname='snb_lexize'), + 'English Stemmer. Snowball.' +; + +CREATE FUNCTION snb_ru_init(text) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +insert into pg_ts_dict select + 'ru_stem', + (select oid from pg_proc where proname='snb_ru_init'), + 'DATA_PATH/russian.stop', + (select oid from pg_proc where proname='snb_lexize'), + 'Russian Stemmer. Snowball.' +; + +CREATE FUNCTION spell_init(text) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION spell_lexize(internal,internal,int4) + returns internal + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +insert into pg_ts_dict select + 'ispell_template', + (select oid from pg_proc where proname='spell_init'), + null, + (select oid from pg_proc where proname='spell_lexize'), + 'ISpell interface. Must have .dict and .aff files' +; + +CREATE FUNCTION syn_init(text) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION syn_lexize(internal,internal,int4) + returns internal + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +insert into pg_ts_dict select + 'synonym', + (select oid from pg_proc where proname='syn_init'), + null, + (select oid from pg_proc where proname='syn_lexize'), + 'Example of synonym dictionary' +; + +--dict conf +CREATE TABLE pg_ts_parser ( + prs_name text not null primary key, + prs_start oid not null, + prs_nexttoken oid not null, + prs_end oid not null, + prs_headline oid not null, + prs_lextype oid not null, + prs_comment text +) with oids; + +--sql-level interface +CREATE TYPE tokentype + as (tokid int4, alias text, descr text); + +CREATE FUNCTION token_type(int4) + returns setof tokentype + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION token_type(text) + returns setof tokentype + as 'MODULE_PATHNAME', 'token_type_byname' + language 'C' + with (isstrict); + +CREATE FUNCTION token_type() + returns setof tokentype + as 'MODULE_PATHNAME', 'token_type_current' + language 'C' + with (isstrict); + +CREATE FUNCTION set_curprs(int) + returns void + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION set_curprs(text) + returns void + as 'MODULE_PATHNAME', 'set_curprs_byname' + language 'C' + with (isstrict); + +CREATE TYPE tokenout + as (tokid int4, token text); + +CREATE FUNCTION parse(oid,text) + returns setof tokenout + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION parse(text,text) + returns setof tokenout + as 'MODULE_PATHNAME', 'parse_byname' + language 'C' + with (isstrict); + +CREATE FUNCTION parse(text) + returns setof tokenout + as 'MODULE_PATHNAME', 'parse_current' + language 'C' + with (isstrict); + +--default parser +CREATE FUNCTION prsd_start(internal,int4) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION prsd_getlexeme(internal,internal,internal) + returns int4 + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION prsd_end(internal) + returns void + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION prsd_lextype(internal) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +CREATE FUNCTION prsd_headline(internal,internal,internal) + returns internal + as 'MODULE_PATHNAME' + language 'C'; + +insert into pg_ts_parser select + 'default', + (select oid from pg_proc where proname='prsd_start'), + (select oid from pg_proc where proname='prsd_getlexeme'), + (select oid from pg_proc where proname='prsd_end'), + (select oid from pg_proc where proname='prsd_headline'), + (select oid from pg_proc where proname='prsd_lextype'), + '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 FUNCTION set_curcfg(int) + returns void + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +CREATE FUNCTION set_curcfg(text) + returns void + as 'MODULE_PATHNAME', 'set_curcfg_byname' + language 'C' + with (isstrict); + +CREATE FUNCTION show_curcfg() + returns oid + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +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 ('simple', 'default'); + +copy pg_ts_cfgmap from stdin; +default lword {en_stem} +default nlword {simple} +default word {simple} +default email {simple} +default url {simple} +default host {simple} +default sfloat {simple} +default version {simple} +default part_hword {simple} +default nlpart_hword {simple} +default lpart_hword {en_stem} +default hword {simple} +default lhword {en_stem} +default nlhword {simple} +default uri {simple} +default file {simple} +default float {simple} +default int {simple} +default uint {simple} +default_russian lword {en_stem} +default_russian nlword {ru_stem} +default_russian word {ru_stem} +default_russian email {simple} +default_russian url {simple} +default_russian host {simple} +default_russian sfloat {simple} +default_russian version {simple} +default_russian part_hword {simple} +default_russian nlpart_hword {ru_stem} +default_russian lpart_hword {en_stem} +default_russian hword {ru_stem} +default_russian lhword {en_stem} +default_russian nlhword {ru_stem} +default_russian uri {simple} +default_russian file {simple} +default_russian float {simple} +default_russian int {simple} +default_russian uint {simple} +simple lword {simple} +simple nlword {simple} +simple word {simple} +simple email {simple} +simple url {simple} +simple host {simple} +simple sfloat {simple} +simple version {simple} +simple part_hword {simple} +simple nlpart_hword {simple} +simple lpart_hword {simple} +simple hword {simple} +simple lhword {simple} +simple nlhword {simple} +simple uri {simple} +simple file {simple} +simple float {simple} +simple int {simple} +simple uint {simple} +\. + +--tsvector type +CREATE FUNCTION tsvector_in(cstring) +RETURNS tsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE FUNCTION tsvector_out(tsvector) +RETURNS cstring +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE TYPE tsvector ( + INTERNALLENGTH = -1, + INPUT = tsvector_in, + OUTPUT = tsvector_out, + STORAGE = extended +); + +CREATE FUNCTION length(tsvector) +RETURNS int4 +AS 'MODULE_PATHNAME', 'tsvector_length' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION to_tsvector(oid, text) +RETURNS tsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION to_tsvector(text, text) +RETURNS tsvector +AS 'MODULE_PATHNAME', 'to_tsvector_name' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION to_tsvector(text) +RETURNS tsvector +AS 'MODULE_PATHNAME', 'to_tsvector_current' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION strip(tsvector) +RETURNS tsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION setweight(tsvector,"char") +RETURNS tsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE FUNCTION concat(tsvector,tsvector) +RETURNS tsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict,iscachable); + +CREATE OPERATOR || ( + LEFTARG = tsvector, + RIGHTARG = tsvector, + PROCEDURE = concat +); + +--query type +CREATE FUNCTION tsquery_in(cstring) +RETURNS tsquery +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE FUNCTION tsquery_out(tsquery) +RETURNS cstring +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE TYPE tsquery ( + INTERNALLENGTH = -1, + INPUT = tsquery_in, + OUTPUT = tsquery_out +); + +CREATE FUNCTION querytree(tsquery) +RETURNS text +AS 'MODULE_PATHNAME', 'tsquerytree' +LANGUAGE 'C' with (isstrict); + +CREATE FUNCTION to_tsquery(oid, text) +RETURNS tsquery +AS 'MODULE_PATHNAME' +LANGUAGE 'c' with (isstrict,iscachable); + +CREATE FUNCTION to_tsquery(text, text) +RETURNS tsquery +AS 'MODULE_PATHNAME','to_tsquery_name' +LANGUAGE 'c' with (isstrict,iscachable); + +CREATE FUNCTION to_tsquery(text) +RETURNS tsquery +AS 'MODULE_PATHNAME','to_tsquery_current' +LANGUAGE 'c' with (isstrict,iscachable); + +--operations +CREATE FUNCTION exectsq(tsvector, tsquery) +RETURNS bool +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict, iscachable); + +COMMENT ON FUNCTION exectsq(tsvector, tsquery) IS 'boolean operation with text index'; + +CREATE FUNCTION rexectsq(tsquery, tsvector) +RETURNS bool +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict, iscachable); + +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 FUNCTION tsearch2() +RETURNS trigger +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +--Relevation +CREATE FUNCTION rank(float4[], tsvector, tsquery) +RETURNS float4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank(float4[], tsvector, tsquery, int4) +RETURNS float4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank(tsvector, tsquery) +RETURNS float4 +AS 'MODULE_PATHNAME', 'rank_def' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank(tsvector, tsquery, int4) +RETURNS float4 +AS 'MODULE_PATHNAME', 'rank_def' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank_cd(int4, tsvector, tsquery) +RETURNS float4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank_cd(int4, tsvector, tsquery, int4) +RETURNS float4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank_cd(tsvector, tsquery) +RETURNS float4 +AS 'MODULE_PATHNAME', 'rank_cd_def' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION rank_cd(tsvector, tsquery, int4) +RETURNS float4 +AS 'MODULE_PATHNAME', 'rank_cd_def' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(oid, text, tsquery, text) +RETURNS text +AS 'MODULE_PATHNAME', 'headline' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(oid, text, tsquery) +RETURNS text +AS 'MODULE_PATHNAME', 'headline' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(text, text, tsquery, text) +RETURNS text +AS 'MODULE_PATHNAME', 'headline_byname' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(text, text, tsquery) +RETURNS text +AS 'MODULE_PATHNAME', 'headline_byname' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(text, tsquery, text) +RETURNS text +AS 'MODULE_PATHNAME', 'headline_current' +LANGUAGE 'C' WITH (isstrict, iscachable); + +CREATE FUNCTION headline(text, tsquery) +RETURNS text +AS 'MODULE_PATHNAME', 'headline_current' +LANGUAGE 'C' WITH (isstrict, iscachable); + +--GiST +--GiST key type +CREATE FUNCTION gtsvector_in(cstring) +RETURNS gtsvector +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE FUNCTION gtsvector_out(gtsvector) +RETURNS cstring +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE TYPE gtsvector ( + INTERNALLENGTH = -1, + INPUT = gtsvector_in, + OUTPUT = gtsvector_out +); + +-- support FUNCTIONs +CREATE FUNCTION gtsvector_consistent(gtsvector,internal,int4) +RETURNS bool +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +CREATE FUNCTION gtsvector_compress(internal) +RETURNS internal +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +CREATE FUNCTION gtsvector_decompress(internal) +RETURNS internal +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +CREATE FUNCTION gtsvector_penalty(internal,internal,internal) +RETURNS internal +AS 'MODULE_PATHNAME' +LANGUAGE 'C' with (isstrict); + +CREATE FUNCTION gtsvector_picksplit(internal, internal) +RETURNS internal +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +CREATE FUNCTION gtsvector_union(bytea, internal) +RETURNS _int4 +AS 'MODULE_PATHNAME' +LANGUAGE 'C'; + +CREATE 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 (bytea, 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); + +--REATE FUNCTION tsstat_in(cstring) +--RETURNS tsstat +--AS 'MODULE_PATHNAME' +--LANGUAGE 'C' with (isstrict); +-- +--CREATE FUNCTION tsstat_out(tsstat) +--RETURNS cstring +--AS 'MODULE_PATHNAME' +--LANGUAGE 'C' with (isstrict); +-- +--CREATE TYPE tsstat ( +-- INTERNALLENGTH = -1, +-- INPUT = tsstat_in, +-- OUTPUT = tsstat_out, +-- STORAGE = plain +--); +-- +--CREATE FUNCTION ts_accum(tsstat,tsvector) +--RETURNS tsstat +--AS 'MODULE_PATHNAME' +--LANGUAGE 'C' with (isstrict); +-- +--CREATE FUNCTION ts_accum_finish(tsstat) +-- returns setof statinfo +-- as 'MODULE_PATHNAME' +-- language 'C' +-- with (isstrict); +-- +--CREATE AGGREGATE stat ( +-- BASETYPE=tsvector, +-- SFUNC=ts_accum, +-- STYPE=tsstat, +-- FINALFUNC = ts_accum_finish, +-- initcond = '' +--); + +CREATE FUNCTION stat(text) + returns setof statinfo + as 'MODULE_PATHNAME', 'ts_stat' + language 'C' + with (isstrict); + +--reset - just for debuging +CREATE FUNCTION reset_tsearch() + returns void + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +--get cover (debug for rank_cd) +CREATE FUNCTION get_covers(tsvector,tsquery) + returns text + as 'MODULE_PATHNAME' + language 'C' + with (isstrict); + +--debug function +create type tsdebug as ( + ts_name text, + tok_type text, + description text, + token text, + dict_name text[], + "tsvector" tsvector +); + +create function _get_parser_from_curcfg() +returns text as +' select prs_name from pg_ts_cfg where oid = show_curcfg() ' +language 'SQL' with(isstrict,iscachable); + +create 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' with(isstrict); + + +--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_id=4; +--example of synonym dict +--update pg_ts_dict set dict_initoption='/usr/local/share/ispell/english.syn' where dict_id=5; +END; diff --git a/contrib/tsearch2/wordparser/Makefile b/contrib/tsearch2/wordparser/Makefile index 56d476525f..d1703fd78a 100644 --- a/contrib/tsearch2/wordparser/Makefile +++ b/contrib/tsearch2/wordparser/Makefile @@ -1,9 +1,11 @@ +# $Header: /cvsroot/pgsql/contrib/tsearch2/wordparser/Attic/Makefile,v 1.4 2003/08/23 04:25:29 petere Exp $ + subdir = contrib/tsearch2/wordparser top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I$(srcdir) -I$(srcdir)/.. $(CPPFLAGS) +PG_CPPFLAGS = -I$(srcdir)/.. override CFLAGS += $(CFLAGS_SL) SUBOBJS = parser.o deflex.o @@ -23,6 +25,3 @@ SUBSYS.o: $(SUBOBJS) EXTRA_CLEAN = SUBSYS.o $(SUBOBJS) parser.c include $(top_srcdir)/contrib/contrib-global.mk -# DO NOT DELETE - - -- cgit v1.2.1