Only register the _geo field

This commit is contained in:
Clément Renault 2024-11-13 12:05:27 +01:00
parent 379cedb096
commit 2f8ba6944f
No known key found for this signature in database
GPG Key ID: F250A4C4E3AE5F5F

View File

@ -303,8 +303,6 @@ where
{
// will be used in 'inject_vectors
let vectors_value: Box<RawValue>;
let geo_lat: Box<RawValue>;
let geo_lng: Box<RawValue>;
document_buffer.clear();
let mut unordered_field_buffer = Vec::new();
@ -355,29 +353,12 @@ where
}
if let Some(geo_value) = document.geo_field()? {
#[derive(serde::Deserialize)]
struct Geo {
lat: serde_json::Value,
lng: serde_json::Value,
}
// We must flatten and generate the fields ids for the geo sub fields
if let Ok(Geo { lat, lng }) = serde_json::from_str(geo_value.get()) {
let lat_id =
fields_ids_map.id_or_insert("_geo.lat").ok_or(UserError::AttributeLimitReached)?;
geo_lat = serde_json::value::to_raw_value(&lat).unwrap();
unordered_field_buffer.push((lat_id, &geo_lat));
let lng_id =
fields_ids_map.id_or_insert("_geo.lng").ok_or(UserError::AttributeLimitReached)?;
geo_lng = serde_json::value::to_raw_value(&lng).unwrap();
unordered_field_buffer.push((lng_id, &geo_lng));
}
let fid = fields_ids_map.id_or_insert("_geo").ok_or(UserError::AttributeLimitReached)?;
unordered_field_buffer.push((fid, geo_value));
}
unordered_field_buffer.sort_by_key(|(fid, _)| *fid);
for (fid, value) in unordered_field_buffer.iter() {
dbg!(fields_ids_map.name(*fid), value.get());
writer.insert(*fid, value.get().as_bytes()).unwrap();
}