fix: simplify score promoting
This commit is contained in:
parent
cecf758c3f
commit
3c94f8735a
|
|
@ -182,13 +182,14 @@ impl Database {
|
||||||
pub fn sort_by_score_with_keywords(&mut self, keywords: &[String], now: Epoch) {
|
pub fn sort_by_score_with_keywords(&mut self, keywords: &[String], now: Epoch) {
|
||||||
self.with_dirs_mut(|dirs| {
|
self.with_dirs_mut(|dirs| {
|
||||||
dirs.sort_unstable_by(|dir1: &Dir, dir2: &Dir| {
|
dirs.sort_unstable_by(|dir1: &Dir, dir2: &Dir| {
|
||||||
let key = |dir: &Dir| {
|
let score = |dir: &Dir| {
|
||||||
let exact = keywords.last().is_some_and(|kw| dir.is_exact_match(kw));
|
if keywords.last().is_some_and(|kw| dir.is_exact_match(kw)) {
|
||||||
(exact, dir.score(now))
|
f64::MAX
|
||||||
|
} else {
|
||||||
|
dir.score(now)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
let (exact1, score1) = key(dir1);
|
score(dir1).total_cmp(&score(dir2))
|
||||||
let (exact2, score2) = key(dir2);
|
|
||||||
exact1.cmp(&exact2).then(score1.total_cmp(&score2))
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
self.with_dirty_mut(|dirty| *dirty = true);
|
self.with_dirty_mut(|dirty| *dirty = true);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue