perf: single node tantivy topn (#12181)

This commit is contained in:
Huaijin
2026-05-25 02:38:49 +00:00
committed by GitHub
parent dde90c14de
commit a260b2be87
@@ -144,6 +144,21 @@ impl TreeNodeRewriter for FollowerIndexOptimizer {
*self.index_optimizer_mode.lock() = Some(index_optimize_mode);
return Ok(Transformed::new(plan, true, TreeNodeRecursion::Stop));
}
// check if the query is simple topn or simple distinct
if config::cluster::LOCAL_NODE.is_single_node() {
if let Some(index_optimize_mode) =
is_simple_topn(Arc::clone(&plan), self.index_fields.clone())
{
*self.index_optimizer_mode.lock() = Some(index_optimize_mode);
return Ok(Transformed::new(plan, true, TreeNodeRecursion::Stop));
} else if let Some(index_optimize_mode) =
is_simple_distinct(Arc::clone(&plan), self.index_fields.clone())
{
*self.index_optimizer_mode.lock() = Some(index_optimize_mode);
return Ok(Transformed::new(plan, true, TreeNodeRecursion::Stop));
}
}
return Ok(Transformed::new(plan, false, TreeNodeRecursion::Continue));
} else if plan.as_any().downcast_ref::<AggregateExec>().is_some() {
// Check for SimpleCount
@@ -261,9 +276,8 @@ impl TreeNodeRewriter for LeaderIndexOptimizer {
let mut rewriter = IndexOptimizerRewrite::new(index_optimize_mode);
let plan = plan.rewrite(&mut rewriter)?.data;
return Ok(Transformed::new(plan, true, TreeNodeRecursion::Stop));
} else {
return Ok(Transformed::new(plan, false, TreeNodeRecursion::Continue));
}
return Ok(Transformed::new(plan, false, TreeNodeRecursion::Continue));
}
Ok(Transformed::no(plan))
}