Renamed SegmentLocalId to SegmentOrdinal for more homogeneity and edited

changelog
This commit is contained in:
Paul Masurel
2021-03-29 09:23:53 +09:00
parent a0ec6e1e9d
commit 38a20ae269
11 changed files with 37 additions and 31 deletions

View File

@@ -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

View File

@@ -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
@@ -45,7 +45,7 @@ impl Collector for Count {
fn for_segment(
&self,
_: SegmentLocalId,
_: SegmentOrdinal,
_: &SegmentReader,
) -> crate::Result<SegmentCountCollector> {
Ok(SegmentCountCollector::default())

View File

@@ -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 {

View File

@@ -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;
@@ -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)?;

View File

@@ -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)?;

View File

@@ -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;
@@ -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>;
@@ -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 {

View File

@@ -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;
@@ -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

View File

@@ -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};
@@ -82,7 +82,7 @@ pub struct TestCollector {
}
pub struct TestSegmentCollector {
segment_id: SegmentLocalId,
segment_id: SegmentOrdinal,
fruit: TestFruit,
}
@@ -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 {
@@ -177,7 +177,7 @@ impl Collector for FastFieldTestCollector {
fn for_segment(
&self,
_: SegmentLocalId,
_: SegmentOrdinal,
segment_reader: &SegmentReader,
) -> crate::Result<FastFieldSegmentCollector> {
let reader = segment_reader

View File

@@ -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;
@@ -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)
@@ -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()

View File

@@ -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};
@@ -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();
@@ -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);
@@ -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)
}

View File

@@ -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,
@@ -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,
}