pub struct Count;
Expand description
CountCollector
collector only counts how many
documents match the query.
use tantivy::collector::Count;
use tantivy::query::QueryParser;
use tantivy::schema::{Schema, TEXT};
use tantivy::{doc, Index};
let mut schema_builder = Schema::builder();
let title = schema_builder.add_text_field("title", TEXT);
let schema = schema_builder.build();
let index = Index::create_in_ram(schema);
let mut index_writer = index.writer(15_000_000).unwrap();
index_writer.add_document(doc!(title => "The Name of the Wind")).unwrap();
index_writer.add_document(doc!(title => "The Diary of Muadib")).unwrap();
index_writer.add_document(doc!(title => "A Dairy Cow")).unwrap();
index_writer.add_document(doc!(title => "The Diary of a Young Girl")).unwrap();
assert!(index_writer.commit().is_ok());
let reader = index.reader().unwrap();
let searcher = reader.searcher();
// Here comes the important part
let query_parser = QueryParser::for_index(&index, vec![title]);
let query = query_parser.parse_query("diary").unwrap();
let count = searcher.search(&query, &Count).unwrap();
assert_eq!(count, 2);
Trait Implementations§
source§impl Collector for Count
impl Collector for Count
§type Fruit = usize
type Fruit = usize
Fruit
is the type for the result of our collection.
e.g. usize
for the Count
collector.source§fn for_segment(
&self,
_: SegmentOrdinal,
_: &SegmentReader
) -> Result<SegmentCountCollector>
fn for_segment( &self, _: SegmentOrdinal, _: &SegmentReader ) -> Result<SegmentCountCollector>
set_segment
is called before beginning to enumerate
on this segment.source§fn requires_scoring(&self) -> bool
fn requires_scoring(&self) -> bool
Returns true iff the collector requires to compute scores for documents.
source§fn merge_fruits(&self, segment_counts: Vec<usize>) -> Result<usize>
fn merge_fruits(&self, segment_counts: Vec<usize>) -> Result<usize>
Combines the fruit associated with the collection of each segments
into one fruit.
source§fn collect_segment(
&self,
weight: &dyn Weight,
segment_ord: u32,
reader: &SegmentReader
) -> Result<<Self::Child as SegmentCollector>::Fruit>
fn collect_segment( &self, weight: &dyn Weight, segment_ord: u32, reader: &SegmentReader ) -> Result<<Self::Child as SegmentCollector>::Fruit>
Created a segment collector and
Auto Trait Implementations§
impl Freeze for Count
impl RefUnwindSafe for Count
impl Send for Count
impl Sync for Count
impl Unpin for Count
impl UnwindSafe for Count
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
Mutably borrows from an owned value. Read more
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.