mirror of
https://github.com/infinilabs/coco-app.git
synced 2025-12-16 19:47:43 +01:00
refactor(post-search): collect at least 2 documents from each query source (#948)
This commit refactors the code that evenly collects documents from query sources to let it collect at least 2 documents in every source, which could correct the case when `max_hits_per_source` is 0. This was possible with the previous impl, no longer allowed after this commit
This commit is contained in:
@@ -46,6 +46,7 @@ chore: use a custom log directory #930
|
|||||||
chore: bump tauri_nspanel to v2.1 #933
|
chore: bump tauri_nspanel to v2.1 #933
|
||||||
refactor: show_coco/hide_coco now use NSPanel's function on macOS #933
|
refactor: show_coco/hide_coco now use NSPanel's function on macOS #933
|
||||||
refactor: procedure that convert_pages() into a func #934
|
refactor: procedure that convert_pages() into a func #934
|
||||||
|
refactor(post-search): collect at least 2 documents from each query source #948
|
||||||
refactor: custom_version_comparator() now compares semantic versions #941
|
refactor: custom_version_comparator() now compares semantic versions #941
|
||||||
|
|
||||||
## 0.8.0 (2025-09-28)
|
## 0.8.0 (2025-09-28)
|
||||||
|
|||||||
@@ -286,10 +286,8 @@ async fn query_coco_fusion_multi_query_sources(
|
|||||||
let mut final_hits_grouped_by_source_id: HashMap<String, Vec<QueryHits>> = HashMap::new();
|
let mut final_hits_grouped_by_source_id: HashMap<String, Vec<QueryHits>> = HashMap::new();
|
||||||
let mut pruned: HashMap<&str, &[QueryHits]> = HashMap::new();
|
let mut pruned: HashMap<&str, &[QueryHits]> = HashMap::new();
|
||||||
|
|
||||||
// max_hits_per_source could be 0, then `final_hits_grouped_by_source_id`
|
// Include at least 2 hits from each query source
|
||||||
// would be empty. But we don't need to worry about this case as we will
|
let max_hits_per_source = (size as usize / n_sources).max(2);
|
||||||
// populate hits later.
|
|
||||||
let max_hits_per_source = size as usize / n_sources;
|
|
||||||
for (source_id, hits) in all_hits_grouped_by_source_id.iter() {
|
for (source_id, hits) in all_hits_grouped_by_source_id.iter() {
|
||||||
let hits_taken = if hits.len() > max_hits_per_source {
|
let hits_taken = if hits.len() > max_hits_per_source {
|
||||||
pruned.insert(&source_id, &hits[max_hits_per_source..]);
|
pruned.insert(&source_id, &hits[max_hits_per_source..]);
|
||||||
@@ -376,8 +374,6 @@ async fn query_coco_fusion_multi_query_sources(
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Truncate `final_hits` in case it contains more than `size` hits
|
// Truncate `final_hits` in case it contains more than `size` hits
|
||||||
//
|
|
||||||
// Technically, we are safe to not do this. But since it is trivial, double-check it.
|
|
||||||
final_hits.truncate(size as usize);
|
final_hits.truncate(size as usize);
|
||||||
|
|
||||||
if final_hits.len() < 5 {
|
if final_hits.len() < 5 {
|
||||||
|
|||||||
Reference in New Issue
Block a user