From 5a575738ac0e493dc79985f1977386a5185fd3b3 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 17 Oct 2025 15:48:58 +0200 Subject: [PATCH] tweak search result ranking --- .../java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt | 4 ++-- .../src/main/java/de/mm20/launcher2/search/ResultScore.kt | 3 ++- .../src/main/java/de/mm20/launcher2/database/SearchableDao.kt | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt index 622303a2c..62ca76f9c 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt @@ -433,8 +433,8 @@ class SearchVM : ViewModel(), KoinComponent { b.score.score } - val aTotal = aScore * 0.7f + aWeight.toFloat() * 0.3f - val bTotal = bScore * 0.7f + bWeight.toFloat() * 0.3f + val aTotal = aScore * 0.6f + aWeight.toFloat() * 0.4f + val bTotal = bScore * 0.6f + bWeight.toFloat() * 0.4f bTotal.compareTo(aTotal) } diff --git a/core/base/src/main/java/de/mm20/launcher2/search/ResultScore.kt b/core/base/src/main/java/de/mm20/launcher2/search/ResultScore.kt index 90b6135f6..1ab08d667 100644 --- a/core/base/src/main/java/de/mm20/launcher2/search/ResultScore.kt +++ b/core/base/src/main/java/de/mm20/launcher2/search/ResultScore.kt @@ -43,9 +43,10 @@ value class ResultScore private constructor(private val packed: Long) : Comparab /** * A total score for the result, combining the similarity with additional factors. + * The score is normalized to be between 0 and 1. */ val score: Float - get() = (similarity + (if (isPrefix) 0.8f else 0f) + (if (isSubstring) 0.8f else 0f)) * (if (isPrimary) 1f else 0.8f) + get() = (similarity + (if (isPrefix) 0.2f else 0f) + (if (isSubstring) 0.8f else 0f)).coerceIn(0f, 1f) * (if (isPrimary) 1f else 0.8f) override fun compareTo(other: ResultScore): Int { return score.compareTo(other.score) diff --git a/data/database/src/main/java/de/mm20/launcher2/database/SearchableDao.kt b/data/database/src/main/java/de/mm20/launcher2/database/SearchableDao.kt index 46e233136..7c75ad6fe 100644 --- a/data/database/src/main/java/de/mm20/launcher2/database/SearchableDao.kt +++ b/data/database/src/main/java/de/mm20/launcher2/database/SearchableDao.kt @@ -183,7 +183,7 @@ interface SearchableDao { @Query("UPDATE Searchable SET launchCount = launchCount + 1 WHERE `key` = :key") fun incrementLaunchCount(key: String) - @Query("UPDATE Searchable SET `weight` = `weight` * (1.0 - :alpha) WHERE `key` != :key") + @Query("UPDATE Searchable SET `weight` = `weight` * (1.0 - :alpha) WHERE `key` != :key AND weight > 0.001") fun reduceWeightExcept(key: String, alpha: Double) @Query("UPDATE Searchable SET `weight` = `weight` + :alpha * (1.0 - `weight`) WHERE `key` == :key")