Skip to content

Commit

Permalink
Renamed SegmentLocalId to SegmentOrdinal for more homogeneity and edited
Browse files Browse the repository at this point in the history
changelog
  • Loading branch information
fulmicoton committed Mar 29, 2021
1 parent a0ec6e1 commit 38a20ae
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 31 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Tantivy 0.15.0
This change is breaking but migration is trivial.
- Added an Histogram collector. (@fulmicoton) #994
- Added support for Option<TCollector>. (@fulmicoton)
- DocAddress is now a struct (@scampi) #987


Tantivy 0.14.0
Expand Down
4 changes: 2 additions & 2 deletions src/collector/count_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use super::Collector;
use crate::collector::SegmentCollector;
use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;

/// `CountCollector` collector only counts how many
Expand Down Expand Up @@ -45,7 +45,7 @@ impl Collector for Count {

fn for_segment(
&self,
_: SegmentLocalId,
_: SegmentOrdinal,
_: &SegmentReader,
) -> crate::Result<SegmentCountCollector> {
Ok(SegmentCountCollector::default())
Expand Down
2 changes: 1 addition & 1 deletion src/collector/docset_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ impl Collector for DocSetCollector {

fn for_segment(
&self,
segment_local_id: crate::SegmentLocalId,
segment_local_id: crate::SegmentOrdinal,
_segment: &crate::SegmentReader,
) -> crate::Result<Self::Child> {
Ok(DocSetChildCollector {
Expand Down
4 changes: 2 additions & 2 deletions src/collector/facet_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::schema::Facet;
use crate::schema::Field;
use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;
use std::cmp::Ordering;
use std::collections::btree_map;
Expand Down Expand Up @@ -262,7 +262,7 @@ impl Collector for FacetCollector {

fn for_segment(
&self,
_: SegmentLocalId,
_: SegmentOrdinal,
reader: &SegmentReader,
) -> crate::Result<FacetSegmentCollector> {
let facet_reader = reader.facet_reader(self.field)?;
Expand Down
2 changes: 1 addition & 1 deletion src/collector/histogram_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ impl Collector for HistogramCollector {

fn for_segment(
&self,
_segment_local_id: crate::SegmentLocalId,
_segment_local_id: crate::SegmentOrdinal,
segment: &crate::SegmentReader,
) -> crate::Result<Self::Child> {
let ff_reader = segment.fast_fields().u64_lenient(self.field)?;
Expand Down
6 changes: 3 additions & 3 deletions src/collector/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ See the `custom_collector` example.

use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;
use downcast_rs::impl_downcast;

Expand Down Expand Up @@ -155,7 +155,7 @@ pub trait Collector: Sync + Send {
/// on this segment.
fn for_segment(
&self,
segment_local_id: SegmentLocalId,
segment_local_id: SegmentOrdinal,
segment: &SegmentReader,
) -> crate::Result<Self::Child>;

Expand Down Expand Up @@ -214,7 +214,7 @@ impl<TCollector: Collector> Collector for Option<TCollector> {

fn for_segment(
&self,
segment_local_id: SegmentLocalId,
segment_local_id: SegmentOrdinal,
segment: &SegmentReader,
) -> crate::Result<Self::Child> {
Ok(if let Some(inner) = self {
Expand Down
4 changes: 2 additions & 2 deletions src/collector/multi_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::SegmentCollector;
use crate::collector::Fruit;
use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;
use crate::TantivyError;
use std::marker::PhantomData;
Expand Down Expand Up @@ -175,7 +175,7 @@ impl<'a> Collector for MultiCollector<'a> {

fn for_segment(
&self,
segment_local_id: SegmentLocalId,
segment_local_id: SegmentOrdinal,
segment: &SegmentReader,
) -> crate::Result<MultiCollectorChild> {
let children = self
Expand Down
8 changes: 4 additions & 4 deletions src/collector/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::fastfield::FastFieldReader;
use crate::schema::Field;
use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::{DocAddress, Document, Searcher};

use crate::collector::{Count, FilterCollector, TopDocs};
Expand Down Expand Up @@ -82,7 +82,7 @@ pub struct TestCollector {
}

pub struct TestSegmentCollector {
segment_id: SegmentLocalId,
segment_id: SegmentOrdinal,
fruit: TestFruit,
}

Expand All @@ -108,7 +108,7 @@ impl Collector for TestCollector {

fn for_segment(
&self,
segment_id: SegmentLocalId,
segment_id: SegmentOrdinal,
_reader: &SegmentReader,
) -> crate::Result<TestSegmentCollector> {
Ok(TestSegmentCollector {
Expand Down Expand Up @@ -177,7 +177,7 @@ impl Collector for FastFieldTestCollector {

fn for_segment(
&self,
_: SegmentLocalId,
_: SegmentOrdinal,
segment_reader: &SegmentReader,
) -> crate::Result<FastFieldSegmentCollector> {
let reader = segment_reader
Expand Down
17 changes: 10 additions & 7 deletions src/collector/top_collector.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::DocAddress;
use crate::DocId;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;
use std::cmp::Ordering;
use std::collections::BinaryHeap;
Expand Down Expand Up @@ -118,7 +118,7 @@ where

pub(crate) fn for_segment<F: PartialOrd>(
&self,
segment_id: SegmentLocalId,
segment_id: SegmentOrdinal,
_: &SegmentReader,
) -> TopSegmentCollector<F> {
TopSegmentCollector::new(segment_id, self.limit + self.offset)
Expand Down Expand Up @@ -147,29 +147,32 @@ where
pub(crate) struct TopSegmentCollector<T> {
limit: usize,
heap: BinaryHeap<ComparableDoc<T, DocId>>,
segment_id: u32,
segment_ord: u32,
}

impl<T: PartialOrd> TopSegmentCollector<T> {
fn new(segment_id: SegmentLocalId, limit: usize) -> TopSegmentCollector<T> {
fn new(segment_ord: SegmentOrdinal, limit: usize) -> TopSegmentCollector<T> {
TopSegmentCollector {
limit,
heap: BinaryHeap::with_capacity(limit),
segment_id,
segment_ord,
}
}
}

impl<T: PartialOrd + Clone> TopSegmentCollector<T> {
pub fn harvest(self) -> Vec<(T, DocAddress)> {
let segment_id = self.segment_id;
let segment_ord = self.segment_ord;
self.heap
.into_sorted_vec()
.into_iter()
.map(|comparable_doc| {
(
comparable_doc.feature,
DocAddress::new(segment_id, comparable_doc.doc),
DocAddress {
segment_ord,
doc_id: comparable_doc.doc,
},
)
})
.collect()
Expand Down
11 changes: 7 additions & 4 deletions src/collector/top_score_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::schema::Field;
use crate::DocAddress;
use crate::DocId;
use crate::Score;
use crate::SegmentLocalId;
use crate::SegmentOrdinal;
use crate::SegmentReader;
use crate::{collector::custom_score_top_collector::CustomScoreTopCollector, fastfield::FastValue};
use crate::{collector::top_collector::TopSegmentCollector, TantivyError};
Expand All @@ -37,7 +37,7 @@ where

fn for_segment(
&self,
segment_local_id: crate::SegmentLocalId,
segment_local_id: crate::SegmentOrdinal,
segment: &SegmentReader,
) -> crate::Result<Self::Child> {
let schema = segment.schema();
Expand Down Expand Up @@ -600,7 +600,7 @@ impl Collector for TopDocs {

fn for_segment(
&self,
segment_local_id: SegmentLocalId,
segment_local_id: SegmentOrdinal,
reader: &SegmentReader,
) -> crate::Result<Self::Child> {
let collector = self.0.for_segment(segment_local_id, reader);
Expand Down Expand Up @@ -671,7 +671,10 @@ impl Collector for TopDocs {
let fruit = heap
.into_sorted_vec()
.into_iter()
.map(|cid| (cid.feature, DocAddress::new(segment_ord, cid.doc)))
.map(|cid| (cid.feature, DocAddress {
segment_ord,
doc_id: cid.doc,
}))
.collect();
Ok(fruit)
}
Expand Down
9 changes: 4 additions & 5 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,13 +254,12 @@ pub type Opstamp = u64;
/// the document to the search query.
pub type Score = f32;

/// A `SegmentLocalId` identifies a segment.
/// It only makes sense for a given searcher.
pub type SegmentLocalId = u32;
/// A `SegmentOrdinal` identifies a segment, within a `Searcher`.
pub type SegmentOrdinal = u32;

impl DocAddress {
/// Creates a new DocAddress from the segment/docId pair.
pub fn new(segment_ord: SegmentLocalId, doc_id: DocId) -> DocAddress {
pub fn new(segment_ord: SegmentOrdinal, doc_id: DocId) -> DocAddress {
DocAddress {
segment_ord,
doc_id,
Expand All @@ -280,7 +279,7 @@ impl DocAddress {
pub struct DocAddress {
/// The segment ordinal id that identifies the segment
/// hosting the document in the `Searcher` it is called from.
pub segment_ord: SegmentLocalId,
pub segment_ord: SegmentOrdinal,
/// The segment-local `DocId`.
pub doc_id: DocId,
}
Expand Down

0 comments on commit 38a20ae

Please sign in to comment.