use new fulltext strategies for initial indexing
[Evergreen.git] / Open-ILS / src / sql / Pg / 030.schema.metabib.sql
1 DROP SCHEMA metabib CASCADE;
2
3 BEGIN;
4 CREATE SCHEMA metabib;
5
6 CREATE TABLE metabib.metarecord (
7         id              BIGSERIAL       PRIMARY KEY,
8         fingerprint     TEXT            NOT NULL,
9         master_record   BIGINT,
10         mods            TEXT
11 );
12 CREATE INDEX metabib_metarecord_master_record_idx ON metabib.metarecord (master_record);
13 CREATE INDEX metabib_metarecord_fingerprint_idx ON metabib.metarecord (fingerprint);
14
15 CREATE TABLE metabib.title_field_entry (
16         id              BIGSERIAL       PRIMARY KEY,
17         source          BIGINT          NOT NULL,
18         field           INT             NOT NULL,
19         value           TEXT            NOT NULL,
20         index_vector    tsvector        NOT NULL
21 );
22 CREATE TRIGGER metabib_title_field_entry_fti_trigger
23         BEFORE UPDATE OR INSERT ON metabib.title_field_entry
24         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('title');
25
26 CREATE INDEX metabib_title_field_entry_index_vector_idx ON metabib.title_field_entry USING GIST (index_vector);
27
28
29 CREATE TABLE metabib.author_field_entry (
30         id              BIGSERIAL       PRIMARY KEY,
31         source          BIGINT          NOT NULL,
32         field           INT             NOT NULL,
33         value           TEXT            NOT NULL,
34         index_vector    tsvector        NOT NULL
35 );
36 CREATE TRIGGER metabib_author_field_entry_fti_trigger
37         BEFORE UPDATE OR INSERT ON metabib.author_field_entry
38         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('author');
39
40 CREATE INDEX metabib_author_field_entry_index_vector_idx ON metabib.author_field_entry USING GIST (index_vector);
41
42
43 CREATE TABLE metabib.subject_field_entry (
44         id              BIGSERIAL       PRIMARY KEY,
45         source          BIGINT          NOT NULL,
46         field           INT             NOT NULL,
47         value           TEXT            NOT NULL,
48         index_vector    tsvector        NOT NULL
49 );
50 CREATE TRIGGER metabib_subject_field_entry_fti_trigger
51         BEFORE UPDATE OR INSERT ON metabib.subject_field_entry
52         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('subject');
53
54 CREATE INDEX metabib_subject_field_entry_index_vector_idx ON metabib.subject_field_entry USING GIST (index_vector);
55
56
57 CREATE TABLE metabib.keyword_field_entry (
58         id              BIGSERIAL       PRIMARY KEY,
59         source          BIGINT          NOT NULL,
60         field           INT             NOT NULL,
61         value           TEXT            NOT NULL,
62         index_vector    tsvector        NOT NULL
63 );
64 CREATE TRIGGER metabib_keyword_field_entry_fti_trigger
65         BEFORE UPDATE OR INSERT ON metabib.keyword_field_entry
66         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('keyword');
67
68 CREATE INDEX metabib_keyword_field_entry_index_vector_idx ON metabib.keyword_field_entry USING GIST (index_vector);
69
70
71 CREATE TABLE metabib.series_field_entry (
72         id              BIGSERIAL       PRIMARY KEY,
73         source          BIGINT          NOT NULL,
74         field           INT             NOT NULL,
75         value           TEXT            NOT NULL,
76         index_vector    tsvector        NOT NULL
77 );
78 CREATE TRIGGER metabib_series_field_entry_fti_trigger
79         BEFORE UPDATE OR INSERT ON metabib.series_field_entry
80         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('series');
81
82 CREATE INDEX metabib_series_field_entry_index_vector_idx ON metabib.series_field_entry USING GIST (index_vector);
83
84
85 CREATE TABLE metabib.rec_descriptor (
86         id              BIGSERIAL PRIMARY KEY,
87         record          BIGINT,
88         item_type       TEXT,
89         item_form       TEXT,
90         bib_level       TEXT,
91         control_type    TEXT,
92         char_encoding   TEXT,
93         enc_level       TEXT,
94         audience        TEXT,
95         lit_form        TEXT,
96         type_mat        TEXT,
97         cat_form        TEXT,
98         pub_status      TEXT,
99         item_lang       TEXT,
100         vr_format       TEXT
101 );
102 CREATE INDEX metabib_rec_descriptor_record_idx ON metabib.rec_descriptor (record);
103 /* We may not need these...
104
105 CREATE INDEX metabib_rec_descriptor_item_type_idx ON metabib.rec_descriptor (item_type);
106 CREATE INDEX metabib_rec_descriptor_item_form_idx ON metabib.rec_descriptor (item_form);
107 CREATE INDEX metabib_rec_descriptor_bib_level_idx ON metabib.rec_descriptor (bib_level);
108 CREATE INDEX metabib_rec_descriptor_control_type_idx ON metabib.rec_descriptor (control_type);
109 CREATE INDEX metabib_rec_descriptor_char_encoding_idx ON metabib.rec_descriptor (char_encoding);
110 CREATE INDEX metabib_rec_descriptor_enc_level_idx ON metabib.rec_descriptor (enc_level);
111 CREATE INDEX metabib_rec_descriptor_audience_idx ON metabib.rec_descriptor (audience);
112 CREATE INDEX metabib_rec_descriptor_lit_form_idx ON metabib.rec_descriptor (lit_form);
113 CREATE INDEX metabib_rec_descriptor_cat_form_idx ON metabib.rec_descriptor (cat_form);
114 CREATE INDEX metabib_rec_descriptor_pub_status_idx ON metabib.rec_descriptor (pub_status);
115 CREATE INDEX metabib_rec_descriptor_item_lang_idx ON metabib.rec_descriptor (item_lang);
116 CREATE INDEX metabib_rec_descriptor_vr_format_idx ON metabib.rec_descriptor (vr_format);
117
118 */
119
120
121 CREATE TABLE metabib.full_rec (
122         id              BIGSERIAL       PRIMARY KEY,
123         record          BIGINT          NOT NULL,
124         tag             CHAR(3)         NOT NULL,
125         ind1            TEXT,
126         ind2            TEXT,
127         subfield        TEXT,
128         value           TEXT            NOT NULL,
129         index_vector    tsvector        NOT NULL
130 );
131 CREATE INDEX metabib_full_rec_record_idx ON metabib.full_rec (record);
132 CREATE TRIGGER metabib_full_rec_fti_trigger
133         BEFORE UPDATE OR INSERT ON metabib.full_rec
134         FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('default');
135
136 CREATE INDEX metabib_full_rec_index_vector_idx ON metabib.full_rec USING GIST (index_vector);
137
138
139 CREATE TABLE metabib.metarecord_source_map (
140         id              BIGSERIAL       PRIMARY KEY,
141         metarecord      BIGINT          NOT NULL,
142         source          BIGINT          NOT NULL
143 );
144 CREATE INDEX metabib_metarecord_source_map_metarecord_idx ON metabib.metarecord_source_map (metarecord);
145 CREATE INDEX metabib_metarecord_source_map_source_record_idx ON metabib.metarecord_source_map (source);
146
147
148 COMMIT;