diff --git a/examples/iterating_docs_and_positions.rs b/examples/iterating_docs_and_positions.rs index d08b66a09..abee516cd 100644 --- a/examples/iterating_docs_and_positions.rs +++ b/examples/iterating_docs_and_positions.rs @@ -7,7 +7,6 @@ // the list of documents containing a term, getting // its term frequency, and accessing its positions. -use tantivy::codec::postings::PostingsReader as _; use tantivy::postings::Postings; // --- // Importing tantivy... @@ -92,46 +91,10 @@ fn main() -> tantivy::Result<()> { } } - // A `Term` is a text token associated with a field. - // Let's go through all docs containing the term `title:the` and access their position - let term_the = Term::from_field_text(title, "the"); - - // Some other powerful operations (especially `.skip_to`) may be useful to consume these + // Some other powerful operations (especially `.seek`) may be useful to consume these // posting lists rapidly. // You can check for them in the [`DocSet`](https://docs.rs/tantivy/~0/tantivy/trait.DocSet.html) trait // and the [`Postings`](https://docs.rs/tantivy/~0/tantivy/trait.Postings.html) trait - // Also, for some VERY specific high performance use case like an OLAP analysis of logs, - // you can get better performance by accessing directly the blocks of doc ids. - for segment_reader in searcher.segment_readers() { - // A segment contains different data structure. - // Inverted index stands for the combination of - // - the term dictionary - // - the inverted lists associated with each terms and their positions - let inverted_index = segment_reader.inverted_index(title)?; - - // This segment posting object is like a cursor over the documents matching the term. - // The `IndexRecordOption` arguments tells tantivy we will be interested in both term - // frequencies and positions. - // - // If you don't need all this information, you may get better performance by decompressing - // less information. - if let Some(mut block_segment_postings) = - inverted_index.read_block_postings(&term_the, IndexRecordOption::Basic)? - { - loop { - let docs = block_segment_postings.docs(); - if docs.is_empty() { - break; - } - // Once again these docs MAY contains deleted documents as well. - let docs = block_segment_postings.docs(); - // Prints `Docs [0, 2].` - println!("Docs {docs:?}"); - block_segment_postings.advance(); - } - } - } - Ok(()) } diff --git a/src/codec/standard/postings/standard_postings_reader.rs b/src/codec/standard/postings/standard_postings_reader.rs index 1e97ab46c..d7048b626 100644 --- a/src/codec/standard/postings/standard_postings_reader.rs +++ b/src/codec/standard/postings/standard_postings_reader.rs @@ -543,7 +543,7 @@ mod tests { let searcher = index.reader()?.searcher(); let segment_reader = searcher.segment_reader(0); - let mut block_segments; + let block_segments; { let term = Term::from_field_u64(int_field, 0u64); let inverted_index = segment_reader.inverted_index(int_field)?; @@ -552,13 +552,6 @@ mod tests { .read_block_postings_from_terminfo(&term_info, IndexRecordOption::Basic)?; } assert_eq!(block_segments.docs(), &[0, 2, 4]); - { - let term = Term::from_field_u64(int_field, 1u64); - let inverted_index = segment_reader.inverted_index(int_field)?; - let term_info = inverted_index.get_term_info(&term)?.unwrap(); - inverted_index.reset_block_postings_from_terminfo(&term_info, &mut block_segments)?; - } - assert_eq!(block_segments.docs(), &[1, 3, 5]); Ok(()) } } diff --git a/src/index/inverted_index_reader.rs b/src/index/inverted_index_reader.rs index 4473abaed..7817e5cd8 100644 --- a/src/index/inverted_index_reader.rs +++ b/src/index/inverted_index_reader.rs @@ -161,43 +161,6 @@ impl InvertedIndexReader { Ok(fields) } - /// Resets the block segment to another position of the postings - /// file. - /// - /// This is useful for enumerating through a list of terms, - /// and consuming the associated posting lists while avoiding - /// reallocating a [`BlockSegmentPostings`]. - /// - /// # Warning - /// - /// This does not reset the positions list. - pub fn reset_block_postings_from_terminfo( - &self, - term_info: &TermInfo, - block_postings: &mut BlockSegmentPostings, - ) -> io::Result<()> { - let postings_slice = self - .postings_file_slice - .slice(term_info.postings_range.clone()); - let postings_bytes = postings_slice.read_bytes()?; - block_postings.reset(term_info.doc_freq, postings_bytes)?; - Ok(()) - } - - /// Returns a block postings given a `Term`. - /// This method is for an advanced usage only. - /// - /// Most users should prefer using [`Self::read_postings()`] instead. - pub fn read_block_postings( - &self, - term: &Term, - option: IndexRecordOption, - ) -> io::Result> { - self.get_term_info(term)? - .map(move |term_info| self.read_block_postings_from_terminfo(&term_info, option)) - .transpose() - } - /// Returns a block postings given a `term_info`. /// This method is for an advanced usage only. ///