Improve search relevance and artist transliteration
This commit is contained in:
1 parent
db4548b115
commit
82f3eed9a0
10 files changed
+212
-12
No files matched your search
@@ -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 }
|
||||
|
||||
Reference in new issue
Block a user