Bring some more diversity in the radio mode when using tags

This commit is contained in:
emeric
2020-06-23 11:26:48 +02:00
parent bd84f41b07
commit a293273940
5 changed files with 11 additions and 5 deletions
+1 -1
View File
@@ -464,7 +464,7 @@ Artist::getSimilarArtists(std::optional<std::size_t> offset, std::optional<std::
.bind(self()->id())
.bind(self()->id())
.groupBy("a.id")
.orderBy("COUNT(*) DESC")
.orderBy("COUNT(*) DESC, RANDOM()")
.limit(count ? static_cast<int>(*count) : -1)
.offset(offset ? static_cast<int>(*offset) : -1)};
+1 -1
View File
@@ -426,7 +426,7 @@ Release::getSimilarReleases(std::optional<std::size_t> offset, std::optional<std
.bind(self()->id())
.bind(self()->id())
.groupBy("r.id")
.orderBy("COUNT(*) DESC")
.orderBy("COUNT(*) DESC, RANDOM()")
.limit(count ? static_cast<int>(*count) : -1)
.offset(offset ? static_cast<int>(*offset) : -1)};
+1 -1
View File
@@ -341,7 +341,7 @@ Track::getSimilarTracks(Session& session,
" AND t_c.cluster_id IN (SELECT c.id FROM cluster c INNER JOIN track_cluster t_c ON t_c.cluster_id = c.id WHERE t_c.track_id IN (" + oss.str() + "))"
" AND t.id NOT IN (" + oss.str() + ")")
.groupBy("t.id")
.orderBy("COUNT(*) DESC")
.orderBy("COUNT(*) DESC, RANDOM()")
.limit(size ? static_cast<int>(*size) : -1)
.offset(offset ? static_cast<int>(*offset) : -1)};
+1 -1
View File
@@ -382,7 +382,7 @@ TrackList::getSimilarTracks(std::optional<std::size_t> offset, std::optional<std
.bind(self()->id())
.bind(self()->id())
.groupBy("t.id")
.orderBy("COUNT(*) DESC")
.orderBy("COUNT(*) DESC, RANDOM()")
.limit(size ? static_cast<int>(*size) : -1)
.offset(offset ? static_cast<int>(*offset) : -1)};
+7 -1
View File
@@ -811,7 +811,13 @@ testMultipleTracksSingleClusterSimilarity(Session& session)
const auto similarTracks {Track::getSimilarTracks(session, {tracks.front().getId()})};
CHECK(similarTracks.size() == tracks.size() - 1);
for (auto similarTrack : similarTracks)
CHECK(std::find_if(std::next(std::cbegin(tracks), 1), std::cend(tracks), [&](const ScopedTrack& track) { return similarTrack.id() == track.getId(); }) != std::cend(tracks));
{
CHECK(std::find_if(std::next(std::cbegin(tracks), 1), std::cend(tracks),
[&](const ScopedTrack& track)
{
return similarTrack.id() == track.getId();
}) != std::cend(tracks));
}
}
}