@media-engine/core 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -6
- package/README.ru.md +32 -6
- package/dist/cache/memory.js +10 -8
- package/dist/cache/memory.js.map +1 -1
- package/dist/details/types.d.ts +6 -0
- package/dist/engine/availability.d.ts +1 -0
- package/dist/engine/availability.js +8 -0
- package/dist/engine/availability.js.map +1 -1
- package/dist/engine/circuit-breaker.d.ts +1 -0
- package/dist/engine/circuit-breaker.js +11 -0
- package/dist/engine/circuit-breaker.js.map +1 -1
- package/dist/engine/concurrency-limiter.js +2 -2
- package/dist/engine/concurrency-limiter.js.map +1 -1
- package/dist/engine/engine.d.ts +9 -4
- package/dist/engine/engine.js +277 -102
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/in-flight.d.ts +12 -1
- package/dist/engine/in-flight.js +69 -14
- package/dist/engine/in-flight.js.map +1 -1
- package/dist/engine/operation.d.ts +7 -0
- package/dist/engine/operation.js +49 -0
- package/dist/engine/operation.js.map +1 -0
- package/dist/engine/provider-calls.d.ts +10 -0
- package/dist/engine/provider-calls.js +62 -12
- package/dist/engine/provider-calls.js.map +1 -1
- package/dist/engine/query.d.ts +5 -0
- package/dist/engine/query.js +223 -34
- package/dist/engine/query.js.map +1 -1
- package/dist/engine/response-meta.d.ts +3 -1
- package/dist/engine/response-meta.js +8 -1
- package/dist/engine/response-meta.js.map +1 -1
- package/dist/engine/runtime.d.ts +2 -0
- package/dist/engine/runtime.js +19 -0
- package/dist/engine/runtime.js.map +1 -1
- package/dist/engine/search-discovery.d.ts +3 -0
- package/dist/engine/search-discovery.js +35 -0
- package/dist/engine/search-discovery.js.map +1 -0
- package/dist/engine/search-enrichment-shared.d.ts +23 -0
- package/dist/engine/search-enrichment-shared.js +68 -0
- package/dist/engine/search-enrichment-shared.js.map +1 -0
- package/dist/engine/search-enrichment.d.ts +21 -7
- package/dist/engine/search-enrichment.js +135 -75
- package/dist/engine/search-enrichment.js.map +1 -1
- package/dist/engine/search-identity-snapshot.d.ts +15 -0
- package/dist/engine/search-identity-snapshot.js +101 -0
- package/dist/engine/search-identity-snapshot.js.map +1 -0
- package/dist/engine/search-outcomes.d.ts +32 -0
- package/dist/engine/search-outcomes.js +118 -0
- package/dist/engine/search-outcomes.js.map +1 -0
- package/dist/engine/search-poster-enrichment.d.ts +31 -0
- package/dist/engine/search-poster-enrichment.js +93 -0
- package/dist/engine/search-poster-enrichment.js.map +1 -0
- package/dist/engine/search-result-freeze.d.ts +13 -0
- package/dist/engine/search-result-freeze.js +155 -0
- package/dist/engine/search-result-freeze.js.map +1 -0
- package/dist/engine/torrents.d.ts +22 -0
- package/dist/engine/torrents.js +188 -0
- package/dist/engine/torrents.js.map +1 -0
- package/dist/engine/types.d.ts +6 -1
- package/dist/errors/types.d.ts +1 -1
- package/dist/errors/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/media/types.d.ts +1 -1
- package/dist/merge/diversity.d.ts +15 -0
- package/dist/merge/diversity.js +52 -0
- package/dist/merge/diversity.js.map +1 -0
- package/dist/merge/priority.js +3 -1
- package/dist/merge/priority.js.map +1 -1
- package/dist/merge/scoring.d.ts +10 -0
- package/dist/merge/scoring.js +132 -28
- package/dist/merge/scoring.js.map +1 -1
- package/dist/merge/strategy.js +53 -13
- package/dist/merge/strategy.js.map +1 -1
- package/dist/providers/registry.d.ts +4 -2
- package/dist/providers/registry.js +11 -2
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/types.d.ts +3 -0
- package/dist/response/types.d.ts +20 -0
- package/dist/search/types.d.ts +34 -0
- package/dist/testing/providers.js +2 -0
- package/dist/testing/providers.js.map +1 -1
- package/dist/torrent/index.d.ts +1 -0
- package/dist/torrent/index.js +2 -0
- package/dist/torrent/index.js.map +1 -0
- package/dist/torrent/types.d.ts +132 -0
- package/dist/torrent/types.js +2 -0
- package/dist/torrent/types.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { normalizeTitle } from "./title.js";
|
|
2
|
+
const DIVERSITY_WINDOW_SIZE = 10;
|
|
3
|
+
const MAX_RESULTS_PER_FAMILY = 2;
|
|
4
|
+
const SCORE_TOLERANCE = 0.03;
|
|
5
|
+
const TITLE_SCORE_TOLERANCE = 0.05;
|
|
6
|
+
// Interleaves only similarly ranked title/type families inside a bounded leading window.
|
|
7
|
+
// Чередует только близкие по ranking title/type families внутри ограниченного верхнего окна.
|
|
8
|
+
export function diversifySearchCandidates(candidates, enabled) {
|
|
9
|
+
const positioned = candidates.map((candidate, index) => ({
|
|
10
|
+
...candidate,
|
|
11
|
+
scorePosition: index + 1,
|
|
12
|
+
diversityFamily: createDiversityFamily(candidate),
|
|
13
|
+
}));
|
|
14
|
+
if (!enabled || positioned.length < MAX_RESULTS_PER_FAMILY + 1) {
|
|
15
|
+
return positioned.map((candidate, index) => ({
|
|
16
|
+
...candidate,
|
|
17
|
+
diversityPosition: index + 1,
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
const pending = positioned.slice(0, DIVERSITY_WINDOW_SIZE);
|
|
21
|
+
const diversified = [];
|
|
22
|
+
const familyCounts = new Map();
|
|
23
|
+
while (pending.length > 0) {
|
|
24
|
+
const crowded = pending[0];
|
|
25
|
+
const crowdedCount = familyCounts.get(crowded.diversityFamily) ?? 0;
|
|
26
|
+
const alternativeIndex = crowdedCount >= MAX_RESULTS_PER_FAMILY
|
|
27
|
+
? pending.findIndex((candidate, index) => index > 0 &&
|
|
28
|
+
candidate.diversityFamily !== crowded.diversityFamily &&
|
|
29
|
+
(familyCounts.get(candidate.diversityFamily) ?? 0) < MAX_RESULTS_PER_FAMILY &&
|
|
30
|
+
isComparableCandidate(candidate, crowded))
|
|
31
|
+
: -1;
|
|
32
|
+
const [selected] = pending.splice(alternativeIndex > 0 ? alternativeIndex : 0, 1);
|
|
33
|
+
if (!selected) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
diversified.push(selected);
|
|
37
|
+
familyCounts.set(selected.diversityFamily, (familyCounts.get(selected.diversityFamily) ?? 0) + 1);
|
|
38
|
+
}
|
|
39
|
+
return [...diversified, ...positioned.slice(DIVERSITY_WINDOW_SIZE)].map((candidate, index) => ({
|
|
40
|
+
...candidate,
|
|
41
|
+
diversityPosition: index + 1,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
function createDiversityFamily(candidate) {
|
|
45
|
+
const matchedTitle = candidate.ranking.titleMatch.matchedTitle ?? candidate.title;
|
|
46
|
+
return `${candidate.mediaType}:${normalizeTitle(matchedTitle)}`;
|
|
47
|
+
}
|
|
48
|
+
function isComparableCandidate(candidate, crowded) {
|
|
49
|
+
return (candidate.score >= crowded.score - SCORE_TOLERANCE &&
|
|
50
|
+
candidate.ranking.titleMatch.score >= crowded.ranking.titleMatch.score - TITLE_SCORE_TOLERANCE);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=diversity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diversity.js","sourceRoot":"","sources":["../../src/merge/diversity.ts"],"names":[],"mappings":"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"}
|
package/dist/merge/priority.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Default provider priority for movies and series.
|
|
2
2
|
// Приоритет провайдеров по умолчанию для фильмов и сериалов.
|
|
3
|
-
const DEFAULT_PRIORITY = ["tmdb", "kinobd", "cinemeta", "imdb", "wikidata", "kinopoisk"];
|
|
3
|
+
const DEFAULT_PRIORITY = ["tmdb", "kinobd", "cinemeta", "tvmaze", "imdb", "wikidata", "kinopoisk"];
|
|
4
4
|
// Default provider priority for anime results.
|
|
5
5
|
// Приоритет провайдеров по умолчанию для аниме.
|
|
6
6
|
const ANIME_PRIORITY = [
|
|
@@ -9,6 +9,7 @@ const ANIME_PRIORITY = [
|
|
|
9
9
|
"tmdb",
|
|
10
10
|
"kinobd",
|
|
11
11
|
"cinemeta",
|
|
12
|
+
"tvmaze",
|
|
12
13
|
"imdb",
|
|
13
14
|
"wikidata",
|
|
14
15
|
"kinopoisk",
|
|
@@ -19,6 +20,7 @@ export const SEARCH_RESULT_PRIORITY = [
|
|
|
19
20
|
"tmdb",
|
|
20
21
|
"kinobd",
|
|
21
22
|
"cinemeta",
|
|
23
|
+
"tvmaze",
|
|
22
24
|
"imdb",
|
|
23
25
|
"wikidata",
|
|
24
26
|
"kinopoisk",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/merge/priority.ts"],"names":[],"mappings":"AAGA,mDAAmD;AACnD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/merge/priority.ts"],"names":[],"mappings":"AAGA,mDAAmD;AACnD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnG,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,SAAS;IACT,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAEF,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CACnC,OAAY,EACZ,OAAqB,EACrB,SAAqB;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,YAAY,GAChB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE/F,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,QAAkB;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AAED,0DAA0D;AAC1D,gEAAgE;AAChE,SAAS,eAAe,CAAC,SAAqB;IAC5C,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAED,oDAAoD;AACpD,sDAAsD;AACtD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/merge/scoring.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
import type { SearchRankEvidence, SearchTitleMatchKind } from "../search/index.js";
|
|
1
2
|
import type { SearchEntry, SearchGroup } from "./internal.js";
|
|
2
3
|
import type { MergeContext } from "./types.js";
|
|
3
4
|
export declare function scoreGroup(group: SearchGroup, entries: SearchEntry[], context: MergeContext): number;
|
|
5
|
+
export declare function rankSearchGroup(group: SearchGroup, entries: SearchEntry[], context: MergeContext): {
|
|
6
|
+
score: number;
|
|
7
|
+
evidence: Omit<SearchRankEvidence, "scorePosition" | "diversityPosition" | "finalPosition" | "diversity">;
|
|
8
|
+
};
|
|
4
9
|
export declare function hasExactPrimaryTitle(entries: SearchEntry[], queryTitle: string): boolean;
|
|
5
10
|
export declare function titleRelevanceScore(entries: SearchEntry[], queryTitle: string): number;
|
|
11
|
+
export declare function titleRelevanceEvidence(entries: SearchEntry[], queryTitle: string): {
|
|
12
|
+
kind: SearchTitleMatchKind;
|
|
13
|
+
score: number;
|
|
14
|
+
matchedTitle?: string;
|
|
15
|
+
};
|
package/dist/merge/scoring.js
CHANGED
|
@@ -1,36 +1,50 @@
|
|
|
1
1
|
import { hasSharedStrongId } from "./identity.js";
|
|
2
|
-
import { STRONG_ID_KEYS } from "./internal.js";
|
|
3
2
|
import { normalizeTitle, titleCandidates } from "./title.js";
|
|
4
3
|
// Calculates a public score from match strength, query relevance, and popularity signals.
|
|
5
4
|
// Вычисляет публичную оценку по силе совпадения, релевантности запросу и популярности.
|
|
6
5
|
export function scoreGroup(group, entries, context) {
|
|
6
|
+
return rankSearchGroup(group, entries, context).score;
|
|
7
|
+
}
|
|
8
|
+
// Calculates the public score and its debug explanation from the same normalized signals.
|
|
9
|
+
// Вычисляет публичный score и его debug-объяснение из одних и тех же сигналов.
|
|
10
|
+
export function rankSearchGroup(group, entries, context) {
|
|
7
11
|
const query = context.query;
|
|
8
12
|
const queryIds = "ids" in (query ?? {}) ? query?.ids : undefined;
|
|
9
13
|
const queryTitle = "title" in (query ?? {}) ? query?.title : undefined;
|
|
10
14
|
if (queryIds && entries.some((entry) => hasSharedStrongId(queryIds, entry.result.item.ids))) {
|
|
11
|
-
return 1
|
|
15
|
+
return createRankResult("external_id", group, 1, emptyTitleMatch(), {
|
|
16
|
+
base: signal(1, 1),
|
|
17
|
+
});
|
|
12
18
|
}
|
|
13
19
|
if (!queryTitle?.trim()) {
|
|
14
|
-
|
|
20
|
+
const baseScore = baseGroupScore(group, entries);
|
|
21
|
+
return createRankResult("non_text", group, baseScore, emptyTitleMatch(), {
|
|
22
|
+
base: signal(baseScore, 1),
|
|
23
|
+
});
|
|
15
24
|
}
|
|
16
25
|
const baseScore = baseTextSearchScore(group, entries);
|
|
17
|
-
const
|
|
26
|
+
const titleMatch = titleRelevanceEvidence(entries, queryTitle);
|
|
27
|
+
const titleScore = titleMatch.score;
|
|
18
28
|
const exactPrimaryTitleScore = hasExactPrimaryTitle(entries, queryTitle) ? 1 : 0;
|
|
19
29
|
const popularityScore = ratingVotesScore(entries);
|
|
20
30
|
const ratingScore = normalizedRatingScore(entries);
|
|
21
31
|
const idScore = externalIdCompletenessScore(entries);
|
|
22
32
|
const sourceScore = sourceCoverageScore(entries);
|
|
23
33
|
const authorityScore = sourceAuthorityScore(entries);
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
const signals = {
|
|
35
|
+
base: signal(baseScore, 1),
|
|
36
|
+
title: signal(titleScore, 0.2),
|
|
26
37
|
// Prefer exact primary/original intent over prefix and incidental-alias noise while
|
|
27
38
|
// still allowing overwhelmingly corroborated canonical results for broad short queries.
|
|
28
|
-
exactPrimaryTitleScore
|
|
29
|
-
popularityScore
|
|
30
|
-
ratingScore
|
|
31
|
-
idScore
|
|
32
|
-
sourceScore
|
|
33
|
-
authorityScore
|
|
39
|
+
exactPrimaryTitle: signal(exactPrimaryTitleScore, 0.3),
|
|
40
|
+
popularity: signal(popularityScore, 0.15),
|
|
41
|
+
rating: signal(ratingScore, 0.03),
|
|
42
|
+
externalIds: signal(idScore, 0.2),
|
|
43
|
+
sourceCoverage: signal(sourceScore, 0.02),
|
|
44
|
+
sourceAuthority: signal(authorityScore, 0.1),
|
|
45
|
+
};
|
|
46
|
+
const preBoundedScore = Object.values(signals).reduce((total, rankingSignal) => total + rankingSignal.contribution, 0);
|
|
47
|
+
return createRankResult("text", group, boundedTextScore(preBoundedScore), titleMatch, signals);
|
|
34
48
|
}
|
|
35
49
|
// Distinguishes exact primary/original titles from incidental alternative aliases.
|
|
36
50
|
// Отличает точные основные/оригинальные названия от случайных alternative aliases.
|
|
@@ -43,11 +57,36 @@ export function hasExactPrimaryTitle(entries, queryTitle) {
|
|
|
43
57
|
// Scores how well result titles match the user's text query.
|
|
44
58
|
// Оценивает, насколько названия результатов совпадают с текстовым запросом пользователя.
|
|
45
59
|
export function titleRelevanceScore(entries, queryTitle) {
|
|
60
|
+
return titleRelevanceEvidence(entries, queryTitle).score;
|
|
61
|
+
}
|
|
62
|
+
// Returns the strongest deterministic title match used by ranking and debug evidence.
|
|
63
|
+
// Возвращает сильнейшее детерминированное title match для ranking и debug evidence.
|
|
64
|
+
export function titleRelevanceEvidence(entries, queryTitle) {
|
|
46
65
|
const normalizedQuery = normalizeTitle(queryTitle);
|
|
47
66
|
if (!normalizedQuery) {
|
|
48
|
-
return
|
|
67
|
+
return emptyTitleMatch();
|
|
68
|
+
}
|
|
69
|
+
let best = { kind: "none", score: 0 };
|
|
70
|
+
for (const entry of entries) {
|
|
71
|
+
const primaryTitles = new Set([entry.result.item.title, entry.result.item.originalTitle]
|
|
72
|
+
.filter((title) => Boolean(title))
|
|
73
|
+
.map(normalizeTitle));
|
|
74
|
+
for (const title of titleCandidates(entry.result.item)) {
|
|
75
|
+
const match = scoreNormalizedTitle(normalizeTitle(title), normalizedQuery);
|
|
76
|
+
if (match.score > best.score) {
|
|
77
|
+
best = {
|
|
78
|
+
kind: match.kind === "exact"
|
|
79
|
+
? primaryTitles.has(normalizeTitle(title))
|
|
80
|
+
? "exact_primary"
|
|
81
|
+
: "exact_alias"
|
|
82
|
+
: match.kind,
|
|
83
|
+
score: match.score,
|
|
84
|
+
matchedTitle: title,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
49
88
|
}
|
|
50
|
-
return
|
|
89
|
+
return best;
|
|
51
90
|
}
|
|
52
91
|
// Keeps legacy scores for non-title searches where no relevance ranking is possible.
|
|
53
92
|
// Сохраняет прежние оценки для поиска без title, где нельзя посчитать релевантность.
|
|
@@ -90,32 +129,75 @@ function bestProviderConfidence(entries) {
|
|
|
90
129
|
// Оценивает одно нормализованное название против одного нормализованного запроса.
|
|
91
130
|
function scoreNormalizedTitle(title, query) {
|
|
92
131
|
if (!title) {
|
|
93
|
-
return 0;
|
|
132
|
+
return { kind: "none", score: 0 };
|
|
94
133
|
}
|
|
95
134
|
if (title === query) {
|
|
96
|
-
return 1;
|
|
135
|
+
return { kind: "exact", score: 1 };
|
|
97
136
|
}
|
|
98
137
|
if (title.replace(/\s+/g, "") === query.replace(/\s+/g, "")) {
|
|
99
|
-
return 0.98;
|
|
138
|
+
return { kind: "joined", score: 0.98 };
|
|
100
139
|
}
|
|
101
140
|
if (title.startsWith(`${query} `)) {
|
|
102
|
-
return 0.92;
|
|
141
|
+
return { kind: "prefix", score: adjustPartialTitleScore(0.92, title, query) };
|
|
103
142
|
}
|
|
104
143
|
if (title.includes(` ${query} `) || title.endsWith(` ${query}`)) {
|
|
105
|
-
return 0.75;
|
|
144
|
+
return { kind: "contains", score: adjustPartialTitleScore(0.75, title, query) };
|
|
106
145
|
}
|
|
107
146
|
const queryTokens = query.split(" ").filter(Boolean);
|
|
108
147
|
if (queryTokens.length > 0 && queryTokens.every((token) => title.includes(token))) {
|
|
109
|
-
return 0.55;
|
|
148
|
+
return { kind: "all_tokens", score: adjustPartialTitleScore(0.55, title, query) };
|
|
110
149
|
}
|
|
111
150
|
const titleTokens = title.split(" ").filter(Boolean);
|
|
112
151
|
const fuzzyTokenScores = queryTokens.map((queryToken) => Math.max(...titleTokens.map((titleToken) => fuzzyTokenSimilarity(queryToken, titleToken)), 0));
|
|
113
152
|
const minimumFuzzyScore = queryTokens.length >= 3 ? 0.7 : 0.75;
|
|
114
153
|
if (fuzzyTokenScores.length > 0 &&
|
|
115
154
|
fuzzyTokenScores.every((score) => score >= minimumFuzzyScore)) {
|
|
116
|
-
return
|
|
155
|
+
return {
|
|
156
|
+
kind: "fuzzy",
|
|
157
|
+
score: adjustPartialTitleScore((fuzzyTokenScores.reduce((sum, score) => sum + score, 0) / fuzzyTokenScores.length) * 0.7, title, query),
|
|
158
|
+
};
|
|
117
159
|
}
|
|
118
|
-
return 0;
|
|
160
|
+
return { kind: "none", score: 0 };
|
|
161
|
+
}
|
|
162
|
+
function createRankResult(formula, group, score, titleMatch, partialSignals) {
|
|
163
|
+
const zero = signal(0, 0);
|
|
164
|
+
const signals = {
|
|
165
|
+
base: partialSignals.base ?? zero,
|
|
166
|
+
title: partialSignals.title ?? zero,
|
|
167
|
+
exactPrimaryTitle: partialSignals.exactPrimaryTitle ?? zero,
|
|
168
|
+
popularity: partialSignals.popularity ?? zero,
|
|
169
|
+
rating: partialSignals.rating ?? zero,
|
|
170
|
+
externalIds: partialSignals.externalIds ?? zero,
|
|
171
|
+
sourceCoverage: partialSignals.sourceCoverage ?? zero,
|
|
172
|
+
sourceAuthority: partialSignals.sourceAuthority ?? zero,
|
|
173
|
+
};
|
|
174
|
+
return {
|
|
175
|
+
score,
|
|
176
|
+
evidence: {
|
|
177
|
+
formula,
|
|
178
|
+
matchStrength: group.matchStrength,
|
|
179
|
+
titleMatch,
|
|
180
|
+
signals,
|
|
181
|
+
preBoundedScore: Object.values(signals).reduce((total, rankingSignal) => total + rankingSignal.contribution, 0),
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function signal(value, weight) {
|
|
186
|
+
return { value, weight, contribution: value * weight };
|
|
187
|
+
}
|
|
188
|
+
function emptyTitleMatch() {
|
|
189
|
+
return { kind: "not_applicable", score: 0 };
|
|
190
|
+
}
|
|
191
|
+
// Prefers the closest title completion for multi-word prefix and fuzzy matches.
|
|
192
|
+
// Предпочитает ближайшее продолжение title для multi-word prefix и fuzzy matches.
|
|
193
|
+
function adjustPartialTitleScore(score, title, query) {
|
|
194
|
+
const queryTokenCount = query.split(" ").filter(Boolean).length;
|
|
195
|
+
if (queryTokenCount < 2) {
|
|
196
|
+
return score;
|
|
197
|
+
}
|
|
198
|
+
const titleTokenCount = title.split(" ").filter(Boolean).length;
|
|
199
|
+
const tokenRatio = Math.min(queryTokenCount, titleTokenCount) / Math.max(queryTokenCount, titleTokenCount);
|
|
200
|
+
return score * (0.5 + tokenRatio * 0.5);
|
|
119
201
|
}
|
|
120
202
|
// Allows one small typo in meaningful words while keeping short tokens exact.
|
|
121
203
|
// Допускает одну небольшую опечатку в значимых словах, сохраняя короткие токены точными.
|
|
@@ -194,22 +276,42 @@ function levenshteinDistance(left, right, maxDistance) {
|
|
|
194
276
|
// Scores popularity from the largest available vote count.
|
|
195
277
|
// Оценивает популярность по самому большому доступному числу голосов.
|
|
196
278
|
function ratingVotesScore(entries) {
|
|
197
|
-
const maxVotes =
|
|
198
|
-
return Math.min(1, Math.log10(maxVotes + 1) /
|
|
279
|
+
const maxVotes = maxRatingVotes(entries);
|
|
280
|
+
return Math.min(1, Math.max(0, (Math.log10(maxVotes + 1) - 3) / 4));
|
|
199
281
|
}
|
|
200
282
|
// Scores normalized rating values across providers.
|
|
201
283
|
// Оценивает нормализованные значения рейтингов от провайдеров.
|
|
202
284
|
function normalizedRatingScore(entries) {
|
|
203
285
|
const values = entries.flatMap((entry) => entry.result.item.ratings
|
|
204
|
-
?.map((rating) =>
|
|
286
|
+
?.map((rating) => {
|
|
287
|
+
const value = rating.value / rating.max;
|
|
288
|
+
return value * ratingVoteConfidence(rating.votes);
|
|
289
|
+
})
|
|
205
290
|
.filter((value) => Number.isFinite(value)) ?? []);
|
|
206
291
|
return values.length === 0 ? 0 : Math.max(...values.map((value) => clampScore(value)));
|
|
207
292
|
}
|
|
208
293
|
// Rewards results that carry strong external IDs for better follow-up details lookup.
|
|
209
294
|
// Поощряет результаты с сильными внешними ID для более надежной загрузки деталей.
|
|
210
295
|
function externalIdCompletenessScore(entries) {
|
|
211
|
-
const
|
|
212
|
-
|
|
296
|
+
const ids = entries.map((entry) => entry.result.item.ids);
|
|
297
|
+
const hasCatalogAnimeId = ids.some((value) => value?.shikimori || value?.myAnimeList || value?.aniList);
|
|
298
|
+
const animeCatalogScore = hasCatalogAnimeId ? (maxRatingVotes(entries) >= 100_000 ? 1 : 0.5) : 0;
|
|
299
|
+
return Math.max(0, ids.some((value) => value?.imdb) ? 1 : 0, ids.some((value) => value?.kinopoisk) ? 0.9 : 0, ids.some((value) => value?.tmdb) ? 0.8 : 0, animeCatalogScore, ids.some((value) => value?.worldArt) ? 0.3 : 0);
|
|
300
|
+
}
|
|
301
|
+
function maxRatingVotes(entries) {
|
|
302
|
+
return Math.max(0, ...entries.flatMap((entry) => entry.result.item.ratings?.map((rating) => rating.votes ?? 0) ?? []));
|
|
303
|
+
}
|
|
304
|
+
function ratingVoteConfidence(votes) {
|
|
305
|
+
if (votes === undefined) {
|
|
306
|
+
return 0.2;
|
|
307
|
+
}
|
|
308
|
+
if (votes < 1_000) {
|
|
309
|
+
return 0.3;
|
|
310
|
+
}
|
|
311
|
+
if (votes < 100_000) {
|
|
312
|
+
return 0.6;
|
|
313
|
+
}
|
|
314
|
+
return 1;
|
|
213
315
|
}
|
|
214
316
|
// Rewards results confirmed by multiple providers.
|
|
215
317
|
// Поощряет результаты, подтвержденные несколькими провайдерами.
|
|
@@ -228,11 +330,13 @@ function sourceAuthorityScore(entries) {
|
|
|
228
330
|
function providerAuthority(provider) {
|
|
229
331
|
switch (provider) {
|
|
230
332
|
case "wikidata":
|
|
231
|
-
return 0.
|
|
333
|
+
return 0.9;
|
|
232
334
|
case "tmdb":
|
|
233
335
|
return 0.95;
|
|
234
336
|
case "cinemeta":
|
|
235
337
|
return 0.75;
|
|
338
|
+
case "tvmaze":
|
|
339
|
+
return 0.75;
|
|
236
340
|
case "kinobd":
|
|
237
341
|
return 0.75;
|
|
238
342
|
case "imdb":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/merge/scoring.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/merge/scoring.ts"],"names":[],"mappings":"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"}
|
package/dist/merge/strategy.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { diversifySearchCandidates } from "./diversity.js";
|
|
1
2
|
import { filterDetailsEntriesByIdentity, warnDetailsTypeConflicts } from "./details-identity.js";
|
|
2
3
|
import { firstDefined, firstMeaningfulDetailsStatus, mergeAlternativeTitles, mergeDetailsAlternativeTitles, mergeDetailsGenres, mergeDetailsImages, mergeDetailsRatings, mergeDetailsSources, mergeGenres, mergeRatings, mergeSources, selectBestDetailsImage, selectBestImage, selectDescription, selectDetailsDescription, selectDetailsReleaseDate, selectDetailsTitle, selectDetailsYear, selectReleaseDate, selectShortDescription, selectTitle, selectYear, } from "./fields.js";
|
|
3
4
|
import { groupSearchResults } from "./grouping.js";
|
|
4
5
|
import { EXTERNAL_ID_KEYS } from "./internal.js";
|
|
5
6
|
import { selectMergedMediaType, selectMergedSearchType, selectMetadataPriorityType, } from "./media-type.js";
|
|
6
7
|
import { providerRank, SEARCH_RESULT_PRIORITY, sortEntriesByPriority } from "./priority.js";
|
|
7
|
-
import { hasExactPrimaryTitle,
|
|
8
|
+
import { hasExactPrimaryTitle, rankSearchGroup, titleRelevanceScore } from "./scoring.js";
|
|
8
9
|
// Built-in merge strategy used by core when no custom strategy is provided.
|
|
9
10
|
// Встроенная стратегия объединения, используемая core без пользовательской стратегии.
|
|
10
11
|
export class DefaultMergeStrategy {
|
|
@@ -12,13 +13,16 @@ export class DefaultMergeStrategy {
|
|
|
12
13
|
// Объединяет результаты поиска провайдеров в нормализованные результаты с оценкой.
|
|
13
14
|
mergeSearchResults(results, context = {}) {
|
|
14
15
|
const groups = groupSearchResults(results);
|
|
15
|
-
|
|
16
|
+
const ranked = groups
|
|
16
17
|
.filter((group) => isSearchGroupRelevant(group, context))
|
|
17
|
-
.map((group, groupIndex) =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
.map((group, groupIndex) => {
|
|
19
|
+
const merged = mergeSearchGroup(group, context);
|
|
20
|
+
return {
|
|
21
|
+
groupIndex,
|
|
22
|
+
exactPrimaryTitleMatch: hasExactPrimaryQueryTitle(group.entries, context),
|
|
23
|
+
...merged,
|
|
24
|
+
};
|
|
25
|
+
})
|
|
22
26
|
.sort((left, right) => {
|
|
23
27
|
// The engine's preliminary broad merge feeds a bounded enrichment window. Keep exact
|
|
24
28
|
// canonical candidates in that window even when their initial provider card is sparse.
|
|
@@ -39,19 +43,51 @@ export class DefaultMergeStrategy {
|
|
|
39
43
|
return titleDiff;
|
|
40
44
|
}
|
|
41
45
|
return left.groupIndex - right.groupIndex;
|
|
42
|
-
})
|
|
43
|
-
|
|
46
|
+
});
|
|
47
|
+
const query = context.query;
|
|
48
|
+
const diversified = diversifySearchCandidates(ranked.map((candidate) => ({
|
|
49
|
+
value: candidate.result,
|
|
50
|
+
score: candidate.result.score,
|
|
51
|
+
mediaType: candidate.result.item.type,
|
|
52
|
+
title: candidate.result.item.title,
|
|
53
|
+
ranking: candidate.ranking,
|
|
54
|
+
})), Boolean(query?.title?.trim()) && !context.includeIrrelevantSearchResults);
|
|
55
|
+
return diversified.map((candidate) => ({
|
|
56
|
+
...candidate.value,
|
|
57
|
+
...(context.debug
|
|
58
|
+
? {
|
|
59
|
+
ranking: {
|
|
60
|
+
...candidate.ranking,
|
|
61
|
+
scorePosition: candidate.scorePosition,
|
|
62
|
+
diversityPosition: candidate.diversityPosition,
|
|
63
|
+
finalPosition: candidate.diversityPosition,
|
|
64
|
+
diversity: {
|
|
65
|
+
family: candidate.diversityFamily,
|
|
66
|
+
adjusted: candidate.scorePosition !== candidate.diversityPosition,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
: {}),
|
|
71
|
+
}));
|
|
44
72
|
}
|
|
45
73
|
// Merges provider details results around a primary provider result.
|
|
46
74
|
// Объединяет details-результаты провайдеров вокруг основного результата.
|
|
47
75
|
mergeDetails(results, context = {}) {
|
|
48
76
|
const priorityType = selectMetadataPriorityType(results.map((result) => result.details));
|
|
49
77
|
const sortedEntries = filterDetailsEntriesByIdentity(sortEntriesByPriority(results.map((result, index) => ({ result, index })), context, priorityType), context);
|
|
50
|
-
const mediaType =
|
|
78
|
+
const mediaType = selectMergedDetailsType(sortedEntries.map((entry) => entry.result.details), context);
|
|
51
79
|
const finalEntries = sortEntriesByPriority(sortedEntries, context, selectMetadataPriorityType(sortedEntries.map((entry) => entry.result.details)));
|
|
52
80
|
return mergeDetailsEntries(finalEntries, context, mediaType);
|
|
53
81
|
}
|
|
54
82
|
}
|
|
83
|
+
const ANIME_ID_KEYS = ["shikimori", "myAnimeList", "aniList"];
|
|
84
|
+
// Keeps explicit anime identity when only compatible generic catalogs survive an upstream outage.
|
|
85
|
+
// Сохраняет явную anime-идентичность, когда при upstream outage отвечают лишь общие каталоги.
|
|
86
|
+
function selectMergedDetailsType(items, context) {
|
|
87
|
+
const query = context.query;
|
|
88
|
+
const hasAnimeId = ANIME_ID_KEYS.some((key) => Boolean(query?.ids?.[key] ?? query?.[key]));
|
|
89
|
+
return query?.type === "anime" && hasAnimeId ? "anime" : selectMergedMediaType(items);
|
|
90
|
+
}
|
|
55
91
|
// Checks exact primary/original query intent for preliminary search enrichment ordering.
|
|
56
92
|
// Проверяет точное основное/original соответствие для предварительного enrichment-порядка.
|
|
57
93
|
function hasExactPrimaryQueryTitle(entries, context) {
|
|
@@ -106,10 +142,14 @@ function mergeSearchGroup(group, context) {
|
|
|
106
142
|
ratings: mergeRatings(sortedEntries),
|
|
107
143
|
ids,
|
|
108
144
|
};
|
|
145
|
+
const ranking = rankSearchGroup(group, sortedEntries, context);
|
|
109
146
|
return {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
147
|
+
result: {
|
|
148
|
+
item,
|
|
149
|
+
score: ranking.score,
|
|
150
|
+
sources: mergeSources(sortedEntries),
|
|
151
|
+
},
|
|
152
|
+
ranking: ranking.evidence,
|
|
113
153
|
};
|
|
114
154
|
}
|
|
115
155
|
// Merges sorted details entries while keeping unsafe nested fields from primary.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/merge/strategy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/merge/strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { MediaProvider, ProviderDetailsQuery, ProviderInfo, ProviderSearchQuery } from "./types.js";
|
|
1
|
+
import type { MediaProvider, ProviderDetailsQuery, ProviderInfo, ProviderSearchQuery, TitleDiscoveryRole } from "./types.js";
|
|
2
2
|
export declare class ProviderRegistry {
|
|
3
3
|
private readonly providers;
|
|
4
4
|
constructor(providers?: MediaProvider[]);
|
|
5
5
|
register(provider: MediaProvider): void;
|
|
6
6
|
getProviders(): ProviderInfo[];
|
|
7
|
-
selectSearchProviders(query: ProviderSearchQuery
|
|
7
|
+
selectSearchProviders(query: ProviderSearchQuery, options?: {
|
|
8
|
+
titleDiscovery?: TitleDiscoveryRole;
|
|
9
|
+
}): MediaProvider[];
|
|
8
10
|
selectDetailsProviders(query: ProviderDetailsQuery): MediaProvider[];
|
|
9
11
|
}
|
|
@@ -40,9 +40,15 @@ export class ProviderRegistry {
|
|
|
40
40
|
kind: provider.kind,
|
|
41
41
|
capabilities: {
|
|
42
42
|
mediaTypes: [...provider.capabilities.mediaTypes],
|
|
43
|
+
...(provider.capabilities.searchEnrichment !== undefined
|
|
44
|
+
? { searchEnrichment: provider.capabilities.searchEnrichment }
|
|
45
|
+
: {}),
|
|
43
46
|
search: {
|
|
44
47
|
byTitle: provider.capabilities.search.byTitle,
|
|
45
48
|
byExternalIds: [...provider.capabilities.search.byExternalIds],
|
|
49
|
+
...(provider.capabilities.search.titleDiscovery
|
|
50
|
+
? { titleDiscovery: provider.capabilities.search.titleDiscovery }
|
|
51
|
+
: {}),
|
|
46
52
|
},
|
|
47
53
|
details: {
|
|
48
54
|
byExternalIds: [...provider.capabilities.details.byExternalIds],
|
|
@@ -53,13 +59,16 @@ export class ProviderRegistry {
|
|
|
53
59
|
}
|
|
54
60
|
// Selects providers that can handle a normalized search query.
|
|
55
61
|
// Выбирает провайдеров, которые могут обработать нормализованный поисковый запрос.
|
|
56
|
-
selectSearchProviders(query) {
|
|
62
|
+
selectSearchProviders(query, options = {}) {
|
|
57
63
|
const queryIdSources = getExternalIdSources(query.ids);
|
|
58
64
|
return Array.from(this.providers.values()).filter((provider) => {
|
|
59
65
|
if (query.type && !provider.capabilities.mediaTypes.includes(query.type)) {
|
|
60
66
|
return false;
|
|
61
67
|
}
|
|
62
|
-
const
|
|
68
|
+
const providerTitleDiscovery = provider.capabilities.search.titleDiscovery ?? "primary";
|
|
69
|
+
const supportsTitleSearch = Boolean(query.title?.trim()) &&
|
|
70
|
+
provider.capabilities.search.byTitle &&
|
|
71
|
+
(!options.titleDiscovery || options.titleDiscovery === providerTitleDiscovery);
|
|
63
72
|
const supportsIdSearch = queryIdSources.some((source) => provider.capabilities.search.byExternalIds.includes(source));
|
|
64
73
|
return supportsTitleSearch || supportsIdSearch;
|
|
65
74
|
});
|