Improve search relevance and artist transliteration
ci / api / api (push) Successful in 56s
ci / db / db (push) Successful in 1m13s

This commit is contained in:
mrleo1nid committed 2026-10-30 12:09:24 +03:00
1 parent db4548b115
commit 82f3eed9a0
10 files changed
+212 -12

No files matched your search

+18
View File
@@ -12,6 +12,24 @@ import (
// suggestPool — во сколько раз больше кандидатов берётся из Meilisearch для переранжирования подсказок.
const suggestPool = 3
// Exact names stay ahead of related artists, regardless of listening history.
func personalizeArtists(found, exact []string, aff map[uuid.UUID]float64, n int) []string {
protected := make(map[string]bool, len(exact))
for _, id := range exact {
protected[id] = true
}
var first, rest []string
for _, id := range found {
if protected[id] {
first = append(first, id)
} else {
rest = append(rest, id)
}
}
first = append(first, personalize(rest, aff, max(0, n-len(first)))...)
return first[:min(n, len(first))]
}
// Affinity — насколько пользователь «знает» исполнителей, альбомы и треки: прослушивания, доигрывания,
// лайки и дизлайки. Отрицательное — не любит. Нужен для персональных подсказок поиска.
type Affinity struct{ pool *pgxpool.Pool }