Browse Source

create table

visuddhinanda 2 years ago
parent
commit
14ff15edc9

+ 93 - 0
rpc/tulip/tulip/db/db/migrations/20231109065959_create_fts_texts.sql

@@ -0,0 +1,93 @@
+-- migrate:up
+-- 创建表结构
+
+CREATE TABLE fts_texts (
+       paragraph        integer,
+       book             integer,
+       wid              varchar(50),
+       -- 单个出现的黑体字,权重较大
+       bold_single      text,
+       -- 成对出现的黑体字,权重一般
+       bold_double      text,
+       -- 连续三个或三个以上的黑体字,权重较低
+       bold_multiple    text,
+       content          text
+);
+
+-- 创建全文检索配置 pali
+CREATE TEXT SEARCH CONFIGURATION pali ( parser = pg_catalog.default );
+
+-- 创建全文检索配置 pali_unaccent 无标音符号版
+CREATE TEXT SEARCH CONFIGURATION pali_unaccent ( parser = pg_catalog.default );
+
+-- 创建巴利语词形转换字典
+CREATE TEXT SEARCH DICTIONARY pali_stem (
+    TEMPLATE = synonym,
+    SYNONYMS = pali
+);
+
+-- 创建巴利语停用词字典
+CREATE TEXT SEARCH DICTIONARY pali_stopwords (
+    TEMPLATE = pg_catalog.simple, STOPWORDS = pali,
+    ACCEPT = true
+);
+
+-- 修改全文检索配置 pali 使用我们创建的字典
+
+ALTER TEXT SEARCH CONFIGURATION pali
+    ADD MAPPING FOR asciiword, word, hword_part, hword_asciipart
+    WITH pali_stem, pali_stopwords;
+
+-- 修改全文检索配置 pali_unaccent 使用我们创建的字典
+
+CREATE EXTENSION IF NOT EXISTS "unaccent";
+
+ALTER TEXT SEARCH CONFIGURATION pali_unaccent
+    ADD MAPPING FOR asciiword, word, hword_part, hword_asciipart
+    WITH unaccent, pali_stem, pali_stopwords;
+
+
+-- 添加自动更新的 TSVECTOR 字段
+
+ALTER TABLE fts_texts
+      ADD COLUMN full_text_search_weighted TSVECTOR
+      GENERATED ALWAYS AS (
+         setweight(to_tsvector('pali', coalesce(content,'')), 'A')  || ' ' ||
+         setweight(to_tsvector('pali', coalesce(bold_single,'')), 'B') || ' '  ||
+         setweight(to_tsvector('pali', coalesce(bold_double,'')), 'C') || ' ' ||
+         setweight(to_tsvector('pali', coalesce(bold_multiple,'')), 'D')
+      ) STORED;
+
+ALTER TABLE fts_texts
+      ADD COLUMN full_text_search_weighted_unaccent TSVECTOR
+      GENERATED ALWAYS AS (
+         setweight(to_tsvector('pali_unaccent', coalesce(content,'')), 'A')  || ' ' ||
+         setweight(to_tsvector('pali_unaccent', coalesce(bold_single,'')), 'B') || ' '  ||
+         setweight(to_tsvector('pali_unaccent', coalesce(bold_double,'')), 'C') || ' ' ||
+         setweight(to_tsvector('pali_unaccent', coalesce(bold_multiple,'')), 'D')
+      ) STORED;
+
+-- 为该字段创建索引
+
+CREATE INDEX full_text_search_weighted_idx
+       ON fts_texts USING GIN (full_text_search_weighted);
+
+CREATE INDEX full_text_search_weighted__unaccent_idx
+       ON fts_texts USING GIN (full_text_search_weighted_unaccent);
+
+-- migrate:down
+-- 删除全文检索配置 pali
+DROP TEXT SEARCH CONFIGURATION  pali ;
+
+-- 删除全文检索配置 pali_unaccent 无标音符号版
+DROP TEXT SEARCH CONFIGURATION pali_unaccent ;
+
+
+-- 删除巴利语词形转换字典
+DROP TEXT SEARCH DICTIONARY pali_stem ;
+
+-- 删除巴利语停用词字典
+DROP TEXT SEARCH DICTIONARY pali_stopwords ;
+
+drop table fts_texts;
+

+ 0 - 6
rpc/tulip/tulip/db/db/migrations/20231109065959_create_t1.sql

@@ -1,6 +0,0 @@
--- migrate:up
-create table t1(id integer);
-
--- migrate:down
-drop table t1;
-

+ 0 - 6
rpc/tulip/tulip/db/db/migrations/20231109070013_create_t2.sql

@@ -1,6 +0,0 @@
--- migrate:up
-create table t2(id integer);
-
--- migrate:down
-drop table t2;
-