lib/search/word_search: move some score calculation to virtual column

This commit is contained in:
2025-05-16 21:01:49 +02:00
parent 45c4c5f09a
commit 84ae7eca9e
2 changed files with 30 additions and 70 deletions

View File

@@ -39,43 +39,10 @@ SearchMode _determineSearchMode(String word) {
fts_results AS (
SELECT
"${tableName}FTS"."entryId",
CASE
WHEN "${tableName}FTS"."reading" = ? THEN 150
ELSE 100
END
100
+ "${tableName}"."baseScore"
+ (("${tableName}FTS"."reading" = ?) * 50)
- (substr(COALESCE("${TanosJLPTTableNames.jlptTag}"."jlptLevel", 'N0'), 2) * -5)
+ CASE
WHEN "${tableName}"."news" = 1
OR "${tableName}"."ichi" = 1
OR "${tableName}"."spec" = 1
OR "${tableName}"."gai" = 1
THEN 50
ELSE 0
END
+ CASE
WHEN "${tableName}"."news" = 1 THEN 10
WHEN "${tableName}"."news" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."ichi" = 1 THEN 10
WHEN "${tableName}"."ichi" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."spec" = 1 THEN 10
WHEN "${tableName}"."spec" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."gai" = 1 THEN 10
WHEN "${tableName}"."gai" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."orderNum" = 1 THEN 20
ELSE 0
END
AS "score"
FROM "${tableName}FTS"
LEFT JOIN "${TanosJLPTTableNames.jlptTag}" USING ("entryId")
@@ -91,39 +58,8 @@ SearchMode _determineSearchMode(String word) {
SELECT
"entryId",
50
+ "${tableName}"."baseScore"
- (substr(COALESCE("${TanosJLPTTableNames.jlptTag}"."jlptLevel", 'N0'), 2) * -5)
+ CASE
WHEN "${tableName}"."news" = 1
OR "${tableName}"."ichi" = 1
OR "${tableName}"."spec" = 1
OR "${tableName}"."gai" = 1
THEN 50
ELSE 0
END
+ CASE
WHEN "${tableName}"."news" = 1 THEN 10
WHEN "${tableName}"."news" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."ichi" = 1 THEN 10
WHEN "${tableName}"."ichi" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."spec" = 1 THEN 10
WHEN "${tableName}"."spec" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "${tableName}"."gai" = 1 THEN 10
WHEN "${tableName}"."gai" = 2 THEN 5
ELSE 0
END
+ CASE
WHEN "orderNum" = 1 THEN 20
ELSE 0
END
AS "score"
FROM "${tableName}"
LEFT JOIN "${TanosJLPTTableNames.jlptTag}" USING ("entryId")