mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-06 01:02:55 +00:00
28 lines
951 B
Rust
28 lines
951 B
Rust
use super::Scorer;
|
|
use crate::core::SegmentReader;
|
|
use crate::query::Explanation;
|
|
use crate::{DocId, Result};
|
|
|
|
/// A Weight is the specialization of a Query
|
|
/// for a given set of segments.
|
|
///
|
|
/// See [`Query`](./trait.Query.html).
|
|
pub trait Weight: Send + Sync + 'static {
|
|
/// Returns the scorer for the given segment.
|
|
/// See [`Query`](./trait.Query.html).
|
|
fn scorer(&self, reader: &SegmentReader) -> Result<Box<dyn Scorer>>;
|
|
|
|
/// Returns an `Explanation` for the given document.
|
|
fn explain(&self, reader: &SegmentReader, doc: DocId) -> Result<Explanation>;
|
|
|
|
/// Returns the number documents within the given `SegmentReader`.
|
|
fn count(&self, reader: &SegmentReader) -> Result<u32> {
|
|
let mut scorer = self.scorer(reader)?;
|
|
if let Some(delete_bitset) = reader.delete_bitset() {
|
|
Ok(scorer.count(delete_bitset))
|
|
} else {
|
|
Ok(scorer.count_including_deleted())
|
|
}
|
|
}
|
|
}
|