mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-06 09:12:55 +00:00
* Split Collector into an overall Collector and a per-segment SegmentCollector. Precursor to cross-segment parallelism, and as a side benefit cleans up any per-segment fields from being Option<T> to just T. * Attempt to add MultiCollector back * working. Chained collector is broken though * Fix chained collector * Fix test * Make Weight Send+Sync for parallelization purposes * Expose parameters of RangeQuery for external usage * Removed &mut self * fixing tests * Restored TestCollectors * blop * multicollector working * chained collector working * test broken * fixing unit test * blop * blop * Blop * simplifying APi * blop * better syntax * Simplifying top_collector * refactoring * blop * Sync with master * Added multithread search * Collector refactoring * Schema::builder * CR and rustdoc * CR comments * blop * Added an executor * Sorted the segment readers in the searcher * Update searcher.rs * Fixed unit testst * changed the place where we have the sort-segment-by-count heuristic * using crossbeam::channel * inlining * Comments about panics propagating * Added unit test for executor panicking * Readded default * Removed Default impl * Added unit test for executor
39 lines
1.4 KiB
Rust
39 lines
1.4 KiB
Rust
mod reader;
|
|
mod writer;
|
|
|
|
pub use self::reader::BytesFastFieldReader;
|
|
pub use self::writer::BytesFastFieldWriter;
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use schema::Schema;
|
|
use Index;
|
|
|
|
#[test]
|
|
fn test_bytes() {
|
|
let mut schema_builder = Schema::builder();
|
|
let field = schema_builder.add_bytes_field("bytesfield");
|
|
let schema = schema_builder.build();
|
|
let index = Index::create_in_ram(schema);
|
|
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
|
|
index_writer.add_document(doc!(field=>vec![0u8, 1, 2, 3]));
|
|
index_writer.add_document(doc!(field=>vec![]));
|
|
index_writer.add_document(doc!(field=>vec![255u8]));
|
|
index_writer.add_document(doc!(field=>vec![1u8, 3, 5, 7, 9]));
|
|
index_writer.add_document(doc!(field=>vec![0u8; 1000]));
|
|
assert!(index_writer.commit().is_ok());
|
|
|
|
index.load_searchers().unwrap();
|
|
let searcher = index.searcher();
|
|
let reader = searcher.segment_reader(0);
|
|
let bytes_reader = reader.bytes_fast_field_reader(field).unwrap();
|
|
|
|
assert_eq!(bytes_reader.get_val(0), &[0u8, 1, 2, 3]);
|
|
assert!(bytes_reader.get_val(1).is_empty());
|
|
assert_eq!(bytes_reader.get_val(2), &[255u8]);
|
|
assert_eq!(bytes_reader.get_val(3), &[1u8, 3, 5, 7, 9]);
|
|
let long = vec![0u8; 1000];
|
|
assert_eq!(bytes_reader.get_val(4), long.as_slice());
|
|
}
|
|
}
|