mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2025-12-23 02:29:57 +00:00
move to_named_doc to Document trait (#2205)
This commit is contained in:
@@ -195,17 +195,6 @@ impl TantivyDocument {
|
||||
Ok(document)
|
||||
}
|
||||
|
||||
/// Create a named document from the doc.
|
||||
pub fn to_named_doc(&self, schema: &Schema) -> NamedFieldDocument {
|
||||
let mut field_map = BTreeMap::new();
|
||||
for (field, field_values) in self.get_sorted_field_values() {
|
||||
let field_name = schema.get_field_name(field);
|
||||
let values: Vec<OwnedValue> = field_values.into_iter().cloned().collect();
|
||||
field_map.insert(field_name.to_string(), values);
|
||||
}
|
||||
NamedFieldDocument(field_map)
|
||||
}
|
||||
|
||||
/// Encode the schema in JSON.
|
||||
///
|
||||
/// Encoding a document cannot fail.
|
||||
|
||||
@@ -158,6 +158,7 @@ mod default_doc_type;
|
||||
mod existing_type_impls;
|
||||
mod se;
|
||||
|
||||
use std::collections::BTreeMap;
|
||||
use std::fmt::Debug;
|
||||
use std::mem;
|
||||
use std::net::Ipv6Addr;
|
||||
@@ -220,6 +221,20 @@ pub trait Document: DocumentDeserialize + Send + Sync + 'static {
|
||||
grouped_field_values.push((current_field, current_group));
|
||||
grouped_field_values
|
||||
}
|
||||
|
||||
/// Create a named document from the doc.
|
||||
fn to_named_doc(&self, schema: &Schema) -> NamedFieldDocument {
|
||||
let mut field_map = BTreeMap::new();
|
||||
for (field, field_values) in self.get_sorted_field_values() {
|
||||
let field_name = schema.get_field_name(field);
|
||||
let values: Vec<OwnedValue> = field_values
|
||||
.into_iter()
|
||||
.map(|val| val.as_value().into())
|
||||
.collect();
|
||||
field_map.insert(field_name.to_string(), values);
|
||||
}
|
||||
NamedFieldDocument(field_map)
|
||||
}
|
||||
}
|
||||
|
||||
/// A single field value.
|
||||
|
||||
@@ -255,6 +255,28 @@ impl<'de> serde::Deserialize<'de> for OwnedValue {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, V: Value<'a> + ?Sized> From<ReferenceValue<'a, V>> for OwnedValue {
|
||||
fn from(val: ReferenceValue<'a, V>) -> OwnedValue {
|
||||
match val {
|
||||
ReferenceValue::Null => OwnedValue::Null,
|
||||
ReferenceValue::Str(val) => OwnedValue::Str(val.to_string()),
|
||||
ReferenceValue::U64(val) => OwnedValue::U64(val),
|
||||
ReferenceValue::I64(val) => OwnedValue::I64(val),
|
||||
ReferenceValue::F64(val) => OwnedValue::F64(val),
|
||||
ReferenceValue::Date(val) => OwnedValue::Date(val),
|
||||
ReferenceValue::Facet(val) => OwnedValue::Facet(val.clone()),
|
||||
ReferenceValue::Bytes(val) => OwnedValue::Bytes(val.to_vec()),
|
||||
ReferenceValue::IpAddr(val) => OwnedValue::IpAddr(val),
|
||||
ReferenceValue::Bool(val) => OwnedValue::Bool(val),
|
||||
ReferenceValue::PreTokStr(val) => OwnedValue::PreTokStr(val.clone()),
|
||||
ReferenceValue::Array(val) => OwnedValue::Array(val.map(|v| v.into()).collect()),
|
||||
ReferenceValue::Object(val) => {
|
||||
OwnedValue::Object(val.map(|(k, v)| (k.to_string(), v.into())).collect())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<String> for OwnedValue {
|
||||
fn from(s: String) -> OwnedValue {
|
||||
OwnedValue::Str(s)
|
||||
|
||||
Reference in New Issue
Block a user