]> granicus.if.org Git - postgresql/blob - contrib/tsearch2/tsearch2--1.0.sql
369507e8f56006f30465925bfdf13b7a7e6699b4
[postgresql] / contrib / tsearch2 / tsearch2--1.0.sql
1 /* contrib/tsearch2/tsearch2--1.0.sql */
2
3 -- These domains are just to catch schema-qualified references to the
4 -- old data types.
5 CREATE DOMAIN tsvector AS pg_catalog.tsvector;
6 CREATE DOMAIN tsquery AS pg_catalog.tsquery;
7 CREATE DOMAIN gtsvector AS pg_catalog.gtsvector;
8 CREATE DOMAIN gtsq AS pg_catalog.text;
9
10 --dict interface
11 CREATE FUNCTION lexize(oid, text)
12         RETURNS _text
13         as 'ts_lexize'
14         LANGUAGE INTERNAL
15         RETURNS NULL ON NULL INPUT;
16
17 CREATE FUNCTION lexize(text, text)
18         RETURNS _text
19         as 'MODULE_PATHNAME', 'tsa_lexize_byname'
20         LANGUAGE C
21         RETURNS NULL ON NULL INPUT;
22
23 CREATE FUNCTION lexize(text)
24         RETURNS _text
25         as 'MODULE_PATHNAME', 'tsa_lexize_bycurrent'
26         LANGUAGE C
27         RETURNS NULL ON NULL INPUT;
28
29 CREATE FUNCTION set_curdict(int)
30         RETURNS void
31         as 'MODULE_PATHNAME', 'tsa_set_curdict'
32         LANGUAGE C
33         RETURNS NULL ON NULL INPUT;
34
35 CREATE FUNCTION set_curdict(text)
36         RETURNS void
37         as 'MODULE_PATHNAME', 'tsa_set_curdict_byname'
38         LANGUAGE C
39         RETURNS NULL ON NULL INPUT;
40
41 --built-in dictionaries
42 CREATE FUNCTION dex_init(internal)
43         RETURNS internal
44         as 'MODULE_PATHNAME', 'tsa_dex_init'
45         LANGUAGE C;
46
47 CREATE FUNCTION dex_lexize(internal,internal,int4)
48         RETURNS internal
49         as 'MODULE_PATHNAME', 'tsa_dex_lexize'
50         LANGUAGE C
51         RETURNS NULL ON NULL INPUT;
52
53 CREATE FUNCTION snb_en_init(internal)
54         RETURNS internal
55         as 'MODULE_PATHNAME', 'tsa_snb_en_init'
56         LANGUAGE C;
57
58 CREATE FUNCTION snb_lexize(internal,internal,int4)
59         RETURNS internal
60         as 'MODULE_PATHNAME', 'tsa_snb_lexize'
61         LANGUAGE C
62         RETURNS NULL ON NULL INPUT;
63
64 CREATE FUNCTION snb_ru_init_koi8(internal)
65         RETURNS internal
66         as 'MODULE_PATHNAME', 'tsa_snb_ru_init_koi8'
67         LANGUAGE C;
68
69 CREATE FUNCTION snb_ru_init_utf8(internal)
70         RETURNS internal
71         as 'MODULE_PATHNAME', 'tsa_snb_ru_init_utf8'
72         LANGUAGE C;
73
74 CREATE FUNCTION snb_ru_init(internal)
75         RETURNS internal
76         as 'MODULE_PATHNAME', 'tsa_snb_ru_init'
77         LANGUAGE C;
78
79 CREATE FUNCTION spell_init(internal)
80         RETURNS internal
81         as 'MODULE_PATHNAME', 'tsa_spell_init'
82         LANGUAGE C;
83
84 CREATE FUNCTION spell_lexize(internal,internal,int4)
85         RETURNS internal
86         as 'MODULE_PATHNAME', 'tsa_spell_lexize'
87         LANGUAGE C
88         RETURNS NULL ON NULL INPUT;
89
90 CREATE FUNCTION syn_init(internal)
91         RETURNS internal
92         as 'MODULE_PATHNAME', 'tsa_syn_init'
93         LANGUAGE C;
94
95 CREATE FUNCTION syn_lexize(internal,internal,int4)
96         RETURNS internal
97         as 'MODULE_PATHNAME', 'tsa_syn_lexize'
98         LANGUAGE C
99         RETURNS NULL ON NULL INPUT;
100
101 CREATE FUNCTION thesaurus_init(internal)
102         RETURNS internal
103         as 'MODULE_PATHNAME', 'tsa_thesaurus_init'
104         LANGUAGE C;
105
106 CREATE FUNCTION thesaurus_lexize(internal,internal,int4,internal)
107         RETURNS internal
108         as 'MODULE_PATHNAME', 'tsa_thesaurus_lexize'
109         LANGUAGE C
110         RETURNS NULL ON NULL INPUT;
111
112 --sql-level interface
113 CREATE TYPE tokentype
114         as (tokid int4, alias text, descr text);
115
116 CREATE FUNCTION token_type(int4)
117         RETURNS setof tokentype
118         as 'ts_token_type_byid'
119         LANGUAGE INTERNAL
120         RETURNS NULL ON NULL INPUT
121         ROWS 16;
122
123 CREATE FUNCTION token_type(text)
124         RETURNS setof tokentype
125         as 'ts_token_type_byname'
126         LANGUAGE INTERNAL
127         RETURNS NULL ON NULL INPUT
128         ROWS 16;
129
130 CREATE FUNCTION token_type()
131         RETURNS setof tokentype
132         as 'MODULE_PATHNAME', 'tsa_token_type_current'
133         LANGUAGE C
134         RETURNS NULL ON NULL INPUT
135         ROWS 16;
136
137 CREATE FUNCTION set_curprs(int)
138         RETURNS void
139         as 'MODULE_PATHNAME', 'tsa_set_curprs'
140         LANGUAGE C
141         RETURNS NULL ON NULL INPUT;
142
143 CREATE FUNCTION set_curprs(text)
144         RETURNS void
145         as 'MODULE_PATHNAME', 'tsa_set_curprs_byname'
146         LANGUAGE C
147         RETURNS NULL ON NULL INPUT;
148
149 CREATE TYPE tokenout
150         as (tokid int4, token text);
151
152 CREATE FUNCTION parse(oid,text)
153         RETURNS setof tokenout
154         as 'ts_parse_byid'
155         LANGUAGE INTERNAL
156         RETURNS NULL ON NULL INPUT;
157
158 CREATE FUNCTION parse(text,text)
159         RETURNS setof tokenout
160         as 'ts_parse_byname'
161         LANGUAGE INTERNAL
162         RETURNS NULL ON NULL INPUT;
163
164 CREATE FUNCTION parse(text)
165         RETURNS setof tokenout
166         as 'MODULE_PATHNAME', 'tsa_parse_current'
167         LANGUAGE C
168         RETURNS NULL ON NULL INPUT;
169
170 --default parser
171 CREATE FUNCTION prsd_start(internal,int4)
172         RETURNS internal
173         as 'MODULE_PATHNAME', 'tsa_prsd_start'
174         LANGUAGE C;
175
176 CREATE FUNCTION prsd_getlexeme(internal,internal,internal)
177         RETURNS int4
178         as 'MODULE_PATHNAME', 'tsa_prsd_getlexeme'
179         LANGUAGE C;
180
181 CREATE FUNCTION prsd_end(internal)
182         RETURNS void
183         as 'MODULE_PATHNAME', 'tsa_prsd_end'
184         LANGUAGE C;
185
186 CREATE FUNCTION prsd_lextype(internal)
187         RETURNS internal
188         as 'MODULE_PATHNAME', 'tsa_prsd_lextype'
189         LANGUAGE C;
190
191 CREATE FUNCTION prsd_headline(internal,internal,internal)
192         RETURNS internal
193         as 'MODULE_PATHNAME', 'tsa_prsd_headline'
194         LANGUAGE C;
195
196 --tsearch config
197 CREATE FUNCTION set_curcfg(int)
198         RETURNS void
199         as 'MODULE_PATHNAME', 'tsa_set_curcfg'
200         LANGUAGE C
201         RETURNS NULL ON NULL INPUT;
202
203 CREATE FUNCTION set_curcfg(text)
204         RETURNS void
205         as 'MODULE_PATHNAME', 'tsa_set_curcfg_byname'
206         LANGUAGE C
207         RETURNS NULL ON NULL INPUT;
208
209 CREATE FUNCTION show_curcfg()
210         RETURNS oid
211         AS 'get_current_ts_config'
212         LANGUAGE INTERNAL
213         RETURNS NULL ON NULL INPUT STABLE;
214
215 CREATE FUNCTION length(tsvector)
216         RETURNS int4
217         AS 'tsvector_length'
218         LANGUAGE INTERNAL
219         RETURNS NULL ON NULL INPUT IMMUTABLE;
220
221 CREATE FUNCTION to_tsvector(oid, text)
222         RETURNS tsvector
223         AS 'to_tsvector_byid'
224         LANGUAGE INTERNAL
225         RETURNS NULL ON NULL INPUT IMMUTABLE;
226
227 CREATE FUNCTION to_tsvector(text, text)
228         RETURNS tsvector
229         AS 'MODULE_PATHNAME', 'tsa_to_tsvector_name'
230         LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
231
232 CREATE FUNCTION to_tsvector(text)
233         RETURNS tsvector
234         AS 'to_tsvector'
235         LANGUAGE INTERNAL
236         RETURNS NULL ON NULL INPUT IMMUTABLE;
237
238 CREATE FUNCTION strip(tsvector)
239         RETURNS tsvector
240         AS 'tsvector_strip'
241         LANGUAGE INTERNAL
242         RETURNS NULL ON NULL INPUT IMMUTABLE;
243
244 CREATE FUNCTION setweight(tsvector,"char")
245         RETURNS tsvector
246         AS 'tsvector_setweight'
247         LANGUAGE INTERNAL
248         RETURNS NULL ON NULL INPUT IMMUTABLE;
249
250 CREATE FUNCTION concat(tsvector,tsvector)
251         RETURNS tsvector
252         AS 'tsvector_concat'
253         LANGUAGE INTERNAL
254         RETURNS NULL ON NULL INPUT IMMUTABLE;
255
256 CREATE FUNCTION querytree(tsquery)
257         RETURNS text
258         AS 'tsquerytree'
259         LANGUAGE INTERNAL RETURNS NULL ON NULL INPUT;
260
261 CREATE FUNCTION to_tsquery(oid, text)
262         RETURNS tsquery
263         AS 'to_tsquery_byid'
264         LANGUAGE INTERNAL
265         RETURNS NULL ON NULL INPUT IMMUTABLE;
266
267 CREATE FUNCTION to_tsquery(text, text)
268         RETURNS tsquery
269         AS 'MODULE_PATHNAME','tsa_to_tsquery_name'
270         LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
271
272 CREATE FUNCTION to_tsquery(text)
273         RETURNS tsquery
274         AS 'to_tsquery'
275         LANGUAGE INTERNAL
276         RETURNS NULL ON NULL INPUT IMMUTABLE;
277
278 CREATE FUNCTION plainto_tsquery(oid, text)
279         RETURNS tsquery
280         AS 'plainto_tsquery_byid'
281         LANGUAGE INTERNAL
282         RETURNS NULL ON NULL INPUT IMMUTABLE;
283
284 CREATE FUNCTION plainto_tsquery(text, text)
285         RETURNS tsquery
286         AS 'MODULE_PATHNAME','tsa_plainto_tsquery_name'
287         LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
288
289 CREATE FUNCTION plainto_tsquery(text)
290         RETURNS tsquery
291         AS 'plainto_tsquery'
292         LANGUAGE INTERNAL
293         RETURNS NULL ON NULL INPUT IMMUTABLE;
294
295 --Trigger
296 CREATE FUNCTION tsearch2()
297         RETURNS trigger
298         AS 'MODULE_PATHNAME', 'tsa_tsearch2'
299         LANGUAGE C;
300
301 --Relevation
302 CREATE FUNCTION rank(float4[], tsvector, tsquery)
303         RETURNS float4
304         AS 'ts_rank_wtt'
305         LANGUAGE INTERNAL
306         RETURNS NULL ON NULL INPUT IMMUTABLE;
307
308 CREATE FUNCTION rank(float4[], tsvector, tsquery, int4)
309         RETURNS float4
310         AS 'ts_rank_wttf'
311         LANGUAGE INTERNAL
312         RETURNS NULL ON NULL INPUT IMMUTABLE;
313
314 CREATE FUNCTION rank(tsvector, tsquery)
315         RETURNS float4
316         AS 'ts_rank_tt'
317         LANGUAGE INTERNAL
318         RETURNS NULL ON NULL INPUT IMMUTABLE;
319
320 CREATE FUNCTION rank(tsvector, tsquery, int4)
321         RETURNS float4
322         AS 'ts_rank_ttf'
323         LANGUAGE INTERNAL
324         RETURNS NULL ON NULL INPUT IMMUTABLE;
325
326 CREATE FUNCTION rank_cd(float4[], tsvector, tsquery)
327         RETURNS float4
328         AS 'ts_rankcd_wtt'
329         LANGUAGE INTERNAL
330         RETURNS NULL ON NULL INPUT IMMUTABLE;
331
332 CREATE FUNCTION rank_cd(float4[], tsvector, tsquery, int4)
333         RETURNS float4
334         AS 'ts_rankcd_wttf'
335         LANGUAGE INTERNAL
336         RETURNS NULL ON NULL INPUT IMMUTABLE;
337
338 CREATE FUNCTION rank_cd(tsvector, tsquery)
339         RETURNS float4
340         AS 'ts_rankcd_tt'
341         LANGUAGE INTERNAL
342         RETURNS NULL ON NULL INPUT IMMUTABLE;
343
344 CREATE FUNCTION rank_cd(tsvector, tsquery, int4)
345         RETURNS float4
346         AS 'ts_rankcd_ttf'
347         LANGUAGE INTERNAL
348         RETURNS NULL ON NULL INPUT IMMUTABLE;
349
350 CREATE FUNCTION headline(oid, text, tsquery, text)
351         RETURNS text
352         AS 'ts_headline_byid_opt'
353         LANGUAGE INTERNAL
354         RETURNS NULL ON NULL INPUT IMMUTABLE;
355
356 CREATE FUNCTION headline(oid, text, tsquery)
357         RETURNS text
358         AS 'ts_headline_byid'
359         LANGUAGE INTERNAL
360         RETURNS NULL ON NULL INPUT IMMUTABLE;
361
362 CREATE FUNCTION headline(text, text, tsquery, text)
363         RETURNS text
364         AS 'MODULE_PATHNAME', 'tsa_headline_byname'
365         LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
366
367 CREATE FUNCTION headline(text, text, tsquery)
368         RETURNS text
369         AS 'MODULE_PATHNAME', 'tsa_headline_byname'
370         LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
371
372 CREATE FUNCTION headline(text, tsquery, text)
373         RETURNS text
374         AS 'ts_headline_opt'
375         LANGUAGE INTERNAL
376         RETURNS NULL ON NULL INPUT IMMUTABLE;
377
378 CREATE FUNCTION headline(text, tsquery)
379         RETURNS text
380         AS 'ts_headline'
381         LANGUAGE INTERNAL
382         RETURNS NULL ON NULL INPUT IMMUTABLE;
383
384 -- CREATE the OPERATOR class
385 CREATE OPERATOR CLASS gist_tsvector_ops
386 FOR TYPE tsvector USING gist
387 AS
388         OPERATOR        1       @@ (tsvector, tsquery),
389         FUNCTION        1       gtsvector_consistent (internal, gtsvector, int, oid, internal),
390         FUNCTION        2       gtsvector_union (internal, internal),
391         FUNCTION        3       gtsvector_compress (internal),
392         FUNCTION        4       gtsvector_decompress (internal),
393         FUNCTION        5       gtsvector_penalty (internal, internal, internal),
394         FUNCTION        6       gtsvector_picksplit (internal, internal),
395         FUNCTION        7       gtsvector_same (gtsvector, gtsvector, internal),
396         STORAGE         gtsvector;
397
398 --stat info
399 CREATE TYPE statinfo
400         as (word text, ndoc int4, nentry int4);
401
402 CREATE FUNCTION stat(text)
403         RETURNS setof statinfo
404         as 'ts_stat1'
405         LANGUAGE INTERNAL
406         RETURNS NULL ON NULL INPUT;
407
408 CREATE FUNCTION stat(text,text)
409         RETURNS setof statinfo
410         as 'ts_stat2'
411         LANGUAGE INTERNAL
412         RETURNS NULL ON NULL INPUT;
413
414 --reset - just for debuging
415 CREATE FUNCTION reset_tsearch()
416         RETURNS void
417         as 'MODULE_PATHNAME', 'tsa_reset_tsearch'
418         LANGUAGE C
419         RETURNS NULL ON NULL INPUT;
420
421 --get cover (debug for rank_cd)
422 CREATE FUNCTION get_covers(tsvector,tsquery)
423         RETURNS text
424         as 'MODULE_PATHNAME', 'tsa_get_covers'
425         LANGUAGE C
426         RETURNS NULL ON NULL INPUT;
427
428 --debug function
429 create type tsdebug as (
430         ts_name text,
431         tok_type text,
432         description text,
433         token   text,
434         dict_name text[],
435         "tsvector" tsvector
436 );
437
438 CREATE FUNCTION _get_parser_from_curcfg()
439 RETURNS text as
440 $$select prsname::text from pg_catalog.pg_ts_parser p join pg_ts_config c on cfgparser = p.oid where c.oid = show_curcfg();$$
441 LANGUAGE SQL RETURNS NULL ON NULL INPUT IMMUTABLE;
442
443 CREATE FUNCTION ts_debug(text)
444 RETURNS setof tsdebug as $$
445 select
446         (select c.cfgname::text from pg_catalog.pg_ts_config as c
447          where c.oid = show_curcfg()),
448         t.alias as tok_type,
449         t.descr as description,
450         p.token,
451         ARRAY ( SELECT m.mapdict::pg_catalog.regdictionary::pg_catalog.text
452                 FROM pg_catalog.pg_ts_config_map AS m
453                 WHERE m.mapcfg = show_curcfg() AND m.maptokentype = p.tokid
454                 ORDER BY m.mapseqno )
455         AS dict_name,
456         strip(to_tsvector(p.token)) as tsvector
457 from
458         parse( _get_parser_from_curcfg(), $1 ) as p,
459         token_type() as t
460 where
461         t.tokid = p.tokid
462 $$ LANGUAGE SQL RETURNS NULL ON NULL INPUT;
463
464 CREATE FUNCTION numnode(tsquery)
465         RETURNS int4
466         as 'tsquery_numnode'
467         LANGUAGE INTERNAL
468         RETURNS NULL ON NULL INPUT IMMUTABLE;
469
470 CREATE FUNCTION tsquery_and(tsquery,tsquery)
471         RETURNS tsquery
472         as 'tsquery_and'
473         LANGUAGE INTERNAL
474         RETURNS NULL ON NULL INPUT IMMUTABLE;
475
476 CREATE FUNCTION tsquery_or(tsquery,tsquery)
477         RETURNS tsquery
478         as 'tsquery_or'
479         LANGUAGE INTERNAL
480         RETURNS NULL ON NULL INPUT IMMUTABLE;
481
482 CREATE FUNCTION tsquery_not(tsquery)
483         RETURNS tsquery
484         as 'tsquery_not'
485         LANGUAGE INTERNAL
486         RETURNS NULL ON NULL INPUT IMMUTABLE;
487
488 --------------rewrite subsystem
489
490 CREATE FUNCTION rewrite(tsquery, text)
491         RETURNS tsquery
492         as 'tsquery_rewrite_query'
493         LANGUAGE INTERNAL
494         RETURNS NULL ON NULL INPUT IMMUTABLE;
495
496 CREATE FUNCTION rewrite(tsquery, tsquery, tsquery)
497         RETURNS tsquery
498         as 'tsquery_rewrite'
499         LANGUAGE INTERNAL
500         RETURNS NULL ON NULL INPUT IMMUTABLE;
501
502 CREATE FUNCTION rewrite_accum(tsquery,tsquery[])
503         RETURNS tsquery
504         AS 'MODULE_PATHNAME', 'tsa_rewrite_accum'
505         LANGUAGE C;
506
507 CREATE FUNCTION rewrite_finish(tsquery)
508       RETURNS tsquery
509       as 'MODULE_PATHNAME', 'tsa_rewrite_finish'
510       LANGUAGE C;
511
512 CREATE AGGREGATE rewrite (
513       BASETYPE = tsquery[],
514       SFUNC = rewrite_accum,
515       STYPE = tsquery,
516       FINALFUNC = rewrite_finish
517 );
518
519 CREATE FUNCTION tsq_mcontains(tsquery, tsquery)
520         RETURNS bool
521         as 'tsq_mcontains'
522         LANGUAGE INTERNAL
523         RETURNS NULL ON NULL INPUT IMMUTABLE;
524
525 CREATE FUNCTION tsq_mcontained(tsquery, tsquery)
526         RETURNS bool
527         as 'tsq_mcontained'
528         LANGUAGE INTERNAL
529         RETURNS NULL ON NULL INPUT IMMUTABLE;
530
531 CREATE OPERATOR CLASS gist_tp_tsquery_ops
532 FOR TYPE tsquery USING gist
533 AS
534         OPERATOR        7       @> (tsquery, tsquery),
535         OPERATOR        8       <@ (tsquery, tsquery),
536         FUNCTION        1       gtsquery_consistent (internal, internal, int, oid, internal),
537         FUNCTION        2       gtsquery_union (internal, internal),
538         FUNCTION        3       gtsquery_compress (internal),
539         FUNCTION        4       gtsquery_decompress (internal),
540         FUNCTION        5       gtsquery_penalty (internal, internal, internal),
541         FUNCTION        6       gtsquery_picksplit (internal, internal),
542         FUNCTION        7       gtsquery_same (bigint, bigint, internal),
543         STORAGE         bigint;
544
545 CREATE OPERATOR CLASS gin_tsvector_ops
546 FOR TYPE tsvector USING gin
547 AS
548         OPERATOR        1       @@ (tsvector, tsquery),
549         OPERATOR        2       @@@ (tsvector, tsquery),
550         FUNCTION        1       bttextcmp(text, text),
551         FUNCTION        2       gin_extract_tsvector(tsvector,internal,internal),
552         FUNCTION        3       gin_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal),
553         FUNCTION        4       gin_tsquery_consistent(internal,smallint,tsquery,int,internal,internal,internal,internal),
554         FUNCTION        5       gin_cmp_prefix(text,text,smallint,internal),
555         STORAGE         text;
556
557 CREATE OPERATOR CLASS tsvector_ops
558 FOR TYPE tsvector USING btree AS
559         OPERATOR        1       < ,
560         OPERATOR        2       <= ,
561         OPERATOR        3       = ,
562         OPERATOR        4       >= ,
563         OPERATOR        5       > ,
564         FUNCTION        1       tsvector_cmp(tsvector, tsvector);
565
566 CREATE OPERATOR CLASS tsquery_ops
567 FOR TYPE tsquery USING btree AS
568         OPERATOR        1       < ,
569         OPERATOR        2       <= ,
570         OPERATOR        3       = ,
571         OPERATOR        4       >= ,
572         OPERATOR        5       > ,
573         FUNCTION        1       tsquery_cmp(tsquery, tsquery);