pub struct ScoreCollector {
pub k: usize,
/* private fields */
}Expand description
Efficient top-k collector using min-heap (internal, scoring-layer)
Maintains the k highest-scoring documents using a min-heap where the lowest score is at the top for O(1) threshold lookup and O(log k) eviction. No deduplication — caller must ensure each doc_id is inserted only once.
This is intentionally separate from TopKCollector in collector.rs:
ScoreCollector is used inside MaxScoreExecutor where only (doc_id, score, ordinal) tuples exist — no Scorer trait, no position tracking,
and the threshold must be inlined for tight block-max loops.
TopKCollector wraps a Scorer and drives the full DocSet/Scorer
protocol, collecting positions on demand.
Fields§
§k: usizeImplementations§
Source§impl ScoreCollector
impl ScoreCollector
Sourcepub fn insert(&mut self, doc_id: DocId, score: f32) -> bool
pub fn insert(&mut self, doc_id: DocId, score: f32) -> bool
Insert a document score. Returns true if inserted in top-k. Caller must ensure each doc_id is inserted only once.
Sourcepub fn insert_with_ordinal(
&mut self,
doc_id: DocId,
score: f32,
ordinal: u16,
) -> bool
pub fn insert_with_ordinal( &mut self, doc_id: DocId, score: f32, ordinal: u16, ) -> bool
Insert a document score with ordinal. Returns true if inserted in top-k. Caller must ensure each doc_id is inserted only once.
Sourcepub fn would_enter(&self, score: f32) -> bool
pub fn would_enter(&self, score: f32) -> bool
Check if a score could potentially enter top-k
Auto Trait Implementations§
impl Freeze for ScoreCollector
impl RefUnwindSafe for ScoreCollector
impl Send for ScoreCollector
impl Sync for ScoreCollector
impl Unpin for ScoreCollector
impl UnsafeUnpin for ScoreCollector
impl UnwindSafe for ScoreCollector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.