mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-04 16:22:55 +00:00
Compare commits
2 Commits
columnar-m
...
fix_open_b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c12860b01 | ||
|
|
886245ad21 |
@@ -1,5 +1,5 @@
|
|||||||
use crate::directory::{FileSlice, OwnedBytes};
|
use crate::directory::{FileSlice, OwnedBytes};
|
||||||
use crate::fastfield::{BitpackedFastFieldReader, FastFieldReader, MultiValueLength};
|
use crate::fastfield::{DynamicFastFieldReader, FastFieldReader, MultiValueLength};
|
||||||
use crate::DocId;
|
use crate::DocId;
|
||||||
|
|
||||||
/// Reader for byte array fast fields
|
/// Reader for byte array fast fields
|
||||||
@@ -14,13 +14,13 @@ use crate::DocId;
|
|||||||
/// and the start index for the next document, and keeping the bytes in between.
|
/// and the start index for the next document, and keeping the bytes in between.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct BytesFastFieldReader {
|
pub struct BytesFastFieldReader {
|
||||||
idx_reader: BitpackedFastFieldReader<u64>,
|
idx_reader: DynamicFastFieldReader<u64>,
|
||||||
values: OwnedBytes,
|
values: OwnedBytes,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BytesFastFieldReader {
|
impl BytesFastFieldReader {
|
||||||
pub(crate) fn open(
|
pub(crate) fn open(
|
||||||
idx_reader: BitpackedFastFieldReader<u64>,
|
idx_reader: DynamicFastFieldReader<u64>,
|
||||||
values_file: FileSlice,
|
values_file: FileSlice,
|
||||||
) -> crate::Result<BytesFastFieldReader> {
|
) -> crate::Result<BytesFastFieldReader> {
|
||||||
let values = values_file.read_bytes()?;
|
let values = values_file.read_bytes()?;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ pub use self::bytes::{BytesFastFieldReader, BytesFastFieldWriter};
|
|||||||
pub use self::error::{FastFieldNotAvailableError, Result};
|
pub use self::error::{FastFieldNotAvailableError, Result};
|
||||||
pub use self::facet_reader::FacetReader;
|
pub use self::facet_reader::FacetReader;
|
||||||
pub use self::multivalued::{MultiValuedFastFieldReader, MultiValuedFastFieldWriter};
|
pub use self::multivalued::{MultiValuedFastFieldReader, MultiValuedFastFieldWriter};
|
||||||
pub(crate) use self::reader::BitpackedFastFieldReader;
|
|
||||||
pub use self::reader::{DynamicFastFieldReader, FastFieldReader};
|
pub use self::reader::{DynamicFastFieldReader, FastFieldReader};
|
||||||
pub use self::readers::FastFieldReaders;
|
pub use self::readers::FastFieldReaders;
|
||||||
pub use self::serializer::{CompositeFastFieldSerializer, FastFieldDataAccess, FastFieldStats};
|
pub use self::serializer::{CompositeFastFieldSerializer, FastFieldDataAccess, FastFieldStats};
|
||||||
|
|||||||
@@ -248,8 +248,6 @@ impl<Item: FastValue, C: FastFieldCodecReader + Clone> FastFieldReader<Item>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) type BitpackedFastFieldReader<Item> = FastFieldReaderCodecWrapper<Item, BitpackedReader>;
|
|
||||||
|
|
||||||
impl<Item: FastValue> From<Vec<Item>> for DynamicFastFieldReader<Item> {
|
impl<Item: FastValue> From<Vec<Item>> for DynamicFastFieldReader<Item> {
|
||||||
fn from(vals: Vec<Item>) -> DynamicFastFieldReader<Item> {
|
fn from(vals: Vec<Item>) -> DynamicFastFieldReader<Item> {
|
||||||
let mut schema_builder = Schema::builder();
|
let mut schema_builder = Schema::builder();
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
use super::reader::DynamicFastFieldReader;
|
use super::reader::DynamicFastFieldReader;
|
||||||
use crate::directory::{CompositeFile, FileSlice};
|
use crate::directory::{CompositeFile, FileSlice};
|
||||||
use crate::fastfield::{
|
use crate::fastfield::{
|
||||||
BitpackedFastFieldReader, BytesFastFieldReader, FastFieldNotAvailableError, FastValue,
|
BytesFastFieldReader, FastFieldNotAvailableError, FastValue, MultiValuedFastFieldReader,
|
||||||
MultiValuedFastFieldReader,
|
|
||||||
};
|
};
|
||||||
use crate::schema::{Cardinality, Field, FieldType, Schema};
|
use crate::schema::{Cardinality, Field, FieldType, Schema};
|
||||||
use crate::space_usage::PerFieldSpaceUsage;
|
use crate::space_usage::PerFieldSpaceUsage;
|
||||||
@@ -219,7 +218,7 @@ impl FastFieldReaders {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
let fast_field_idx_file = self.fast_field_data(field, 0)?;
|
let fast_field_idx_file = self.fast_field_data(field, 0)?;
|
||||||
let idx_reader = BitpackedFastFieldReader::open(fast_field_idx_file)?;
|
let idx_reader = DynamicFastFieldReader::open(fast_field_idx_file)?;
|
||||||
let data = self.fast_field_data(field, 1)?;
|
let data = self.fast_field_data(field, 1)?;
|
||||||
BytesFastFieldReader::open(idx_reader, data)
|
BytesFastFieldReader::open(idx_reader, data)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1389,6 +1389,7 @@ mod tests {
|
|||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let mut schema_builder = schema::Schema::builder();
|
let mut schema_builder = schema::Schema::builder();
|
||||||
let id_field = schema_builder.add_u64_field("id", FAST | INDEXED | STORED);
|
let id_field = schema_builder.add_u64_field("id", FAST | INDEXED | STORED);
|
||||||
|
let bytes_field = schema_builder.add_bytes_field("bytes", FAST | INDEXED | STORED);
|
||||||
let text_field = schema_builder.add_text_field(
|
let text_field = schema_builder.add_text_field(
|
||||||
"text_field",
|
"text_field",
|
||||||
TextOptions::default()
|
TextOptions::default()
|
||||||
@@ -1435,8 +1436,14 @@ mod tests {
|
|||||||
match op {
|
match op {
|
||||||
IndexingOp::AddDoc { id } => {
|
IndexingOp::AddDoc { id } => {
|
||||||
let facet = Facet::from(&("/cola/".to_string() + &id.to_string()));
|
let facet = Facet::from(&("/cola/".to_string() + &id.to_string()));
|
||||||
index_writer
|
index_writer.add_document(doc!(id_field=>id,
|
||||||
.add_document(doc!(id_field=>id, multi_numbers=> id, multi_numbers => id, text_field => id.to_string(), facet_field => facet, large_text_field=> LOREM))?;
|
bytes_field => id.to_le_bytes().as_slice(),
|
||||||
|
multi_numbers=> id,
|
||||||
|
multi_numbers => id,
|
||||||
|
text_field => id.to_string(),
|
||||||
|
facet_field => facet,
|
||||||
|
large_text_field=> LOREM
|
||||||
|
))?;
|
||||||
}
|
}
|
||||||
IndexingOp::DeleteDoc { id } => {
|
IndexingOp::DeleteDoc { id } => {
|
||||||
index_writer.delete_term(Term::from_field_u64(id_field, id));
|
index_writer.delete_term(Term::from_field_u64(id_field, id));
|
||||||
|
|||||||
Reference in New Issue
Block a user