migrations: create virtual col common on jmdict kanji/reading elements

This commit is contained in:
2025-05-20 10:49:56 +02:00
parent 08f25f6277
commit 4d75bef208
2 changed files with 11 additions and 14 deletions

View File

@@ -47,8 +47,11 @@ CREATE TABLE "JMdict_KanjiElement" (
"spec" INTEGER CHECK ("spec" BETWEEN 1 AND 2),
"gai" INTEGER CHECK ("gai" BETWEEN 1 AND 2),
"nf" INTEGER CHECK ("nf" BETWEEN 1 AND 48),
"common" BOOLEAN NOT NULL AS (
"news" IS 1 OR "ichi" IS 1 OR "spec" IS 1 OR "gai" IS 1
),
"baseScore" INTEGER NOT NULL AS (
(("news" IS 1 OR "ichi" IS 1 OR "spec" IS 1 OR "gai" IS 1) * 50)
("common" * 50)
+ (("news" IS 1) * 10)
+ (("news" IS 2) * 5)
+ (("ichi" IS 1) * 10)
@@ -87,8 +90,11 @@ CREATE TABLE "JMdict_ReadingElement" (
"spec" INTEGER CHECK ("spec" BETWEEN 1 AND 2),
"gai" INTEGER CHECK ("gai" BETWEEN 1 AND 2),
"nf" INTEGER CHECK ("nf" BETWEEN 1 AND 48),
"common" BOOLEAN NOT NULL AS (
"news" IS 1 OR "ichi" IS 1 OR "spec" IS 1 OR "gai" IS 1
),
"baseScore" INTEGER NOT NULL AS (
(("news" IS 1 OR "ichi" IS 1 OR "spec" IS 1 OR "gai" IS 1) * 50)
("common" * 50)
+ (("news" IS 1) * 10)
+ (("news" IS 2) * 5)
+ (("ichi" IS 1) * 10)

View File

@@ -44,14 +44,8 @@ AS
SELECT DISTINCT "entryId"
FROM "JMdict_KanjiElement"
FULL OUTER JOIN "JMdict_ReadingElement" USING("entryId")
WHERE "JMdict_ReadingElement"."news" = 1
OR "JMdict_ReadingElement"."ichi" = 1
OR "JMdict_ReadingElement"."spec" = 1
OR "JMdict_ReadingElement"."gai" = 1
OR "JMdict_KanjiElement"."news" = 1
OR "JMdict_KanjiElement"."ichi" = 1
OR "JMdict_KanjiElement"."spec" = 1
OR "JMdict_KanjiElement"."gai" = 1;
WHERE "JMdict_ReadingElement"."common" = 1
OR "JMdict_KanjiElement"."common" = 1;
-- TODO: Make it possible to match words that contain the
@@ -70,7 +64,4 @@ JOIN "JMdict_KanjiElementFTS"
JOIN "JMdict_KanjiElement"
ON "JMdict_KanjiElementFTS"."entryId" = "JMdict_KanjiElement"."entryId"
AND "JMdict_KanjiElementFTS"."reading" LIKE '%' || "JMdict_KanjiElement"."reading"
WHERE "JMdict_KanjiElement".news = 1
OR "JMdict_KanjiElement".ichi = 1
OR "JMdict_KanjiElement".spec = 1
OR "JMdict_KanjiElement".gai = 1;
WHERE "JMdict_KanjiElement"."common";