diff --git a/persistence/album_repository.go b/persistence/album_repository.go index 49126b850..2da2d4700 100644 --- a/persistence/album_repository.go +++ b/persistence/album_repository.go @@ -9,6 +9,7 @@ import ( "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/rest" + "github.com/dhowden/tag/mbz" ) type albumRepository struct { @@ -36,7 +37,7 @@ func (r *albumRepository) Put(a *model.Album) error { if err != nil { return err } - return r.index(a.ID, a.Name) + return r.index(a.ID, a.Name, a.Artist, mbz.AlbumArtist) } func (r *albumRepository) selectAlbum(options ...model.QueryOptions) SelectBuilder { diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go index 0c7113bbe..cbd5f7e0f 100644 --- a/persistence/mediafile_repository.go +++ b/persistence/mediafile_repository.go @@ -41,7 +41,7 @@ func (r mediaFileRepository) Put(m *model.MediaFile) error { if err != nil { return err } - return r.index(m.ID, m.Title) + return r.index(m.ID, m.Title, m.Album, m.Artist, m.AlbumArtist) } func (r mediaFileRepository) selectMediaFile(options ...model.QueryOptions) SelectBuilder { diff --git a/persistence/sql_search.go b/persistence/sql_search.go index 34404a152..816ced695 100644 --- a/persistence/sql_search.go +++ b/persistence/sql_search.go @@ -10,13 +10,16 @@ import ( const searchTable = "search" -func (r sqlRepository) index(id string, text string) error { - sanitizedText := strings.TrimSpace(sanitize.Accents(strings.ToLower(text))) +func (r sqlRepository) index(id string, text ...string) error { + sanitizedText := strings.Builder{} + for _, txt := range text { + sanitizedText.WriteString(strings.TrimSpace(sanitize.Accents(strings.ToLower(txt))) + " ") + } values := map[string]interface{}{ "id": id, "item_type": r.tableName, - "full_text": sanitizedText, + "full_text": strings.TrimSpace(sanitizedText.String()), } update := Update(searchTable).Where(Eq{"id": id}).SetMap(values) count, err := r.executeSQL(update)