Skip to content

Commit 18e27e3

Browse files
committed
feat(musicbrainz): boost track num and label info search terms when searching
1 parent 09e893c commit 18e27e3

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

musicbrainz/musicbrainz.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/url"
1111
"regexp"
1212
"slices"
13+
"strconv"
1314
"strings"
1415
"sync"
1516
"time"
@@ -89,19 +90,19 @@ func (c *MBClient) SearchRelease(ctx context.Context, q ReleaseQuery) (*Release,
8990
params = append(params, field("date", q.Date.Format(time.DateOnly)))
9091
}
9192
if q.Format != "" {
92-
params = append(params, field("format", strings.ToLower(q.Format)))
93+
params = append(params, boostField(field("format", strings.ToLower(q.Format)), 3)) // boosted
9394
}
9495
if q.Label != "" {
95-
params = append(params, field("label", strings.ToLower(q.Label)))
96+
params = append(params, boostField(field("label", strings.ToLower(q.Label)), 3)) // boosted
9697
}
9798
if q.CatalogueNum != "" {
98-
params = append(params, field("catno", strings.ToLower(q.CatalogueNum)))
99+
params = append(params, boostField(field("catno", strings.ToLower(q.CatalogueNum)), 3)) // boosted
99100
}
100101
if q.Barcode != "" {
101102
params = append(params, field("barcode", q.Barcode))
102103
}
103104
if q.NumTracks > 0 {
104-
params = append(params, field("tracks", q.NumTracks))
105+
params = append(params, boostField(field("tracks", q.NumTracks), 10)) // boosted
105106
}
106107
if len(params) == 0 {
107108
return nil, ErrNoResults
@@ -577,6 +578,12 @@ func field(k string, v any) string {
577578
return fmt.Sprintf("%s:(%v)", k, vstr)
578579
}
579580

581+
func boostField(f string, boost float64) string {
582+
b := strconv.FormatFloat(boost, 'f', -1, 64) // no trailing .0
583+
f += "^" + b
584+
return f
585+
}
586+
580587
func joinPath(base string, p ...string) string {
581588
r, _ := url.JoinPath(base, p...)
582589
return r

0 commit comments

Comments
 (0)