mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-06 12:46:31 +00:00
add cellulite to the index
This commit is contained in:
@ -18,6 +18,7 @@ bincode = "1.3.3"
|
|||||||
bstr = "1.12.0"
|
bstr = "1.12.0"
|
||||||
bytemuck = { version = "1.23.1", features = ["extern_crate_alloc"] }
|
bytemuck = { version = "1.23.1", features = ["extern_crate_alloc"] }
|
||||||
byteorder = "1.5.0"
|
byteorder = "1.5.0"
|
||||||
|
cellulite = { git = "https://github.com/irevoire/cellulite", branch = "main"}
|
||||||
charabia = { version = "0.9.6", default-features = false }
|
charabia = { version = "0.9.6", default-features = false }
|
||||||
concat-arrays = "0.1.2"
|
concat-arrays = "0.1.2"
|
||||||
convert_case = "0.8.0"
|
convert_case = "0.8.0"
|
||||||
@ -27,6 +28,7 @@ either = { version = "1.15.0", features = ["serde"] }
|
|||||||
flatten-serde-json = { path = "../flatten-serde-json" }
|
flatten-serde-json = { path = "../flatten-serde-json" }
|
||||||
fst = "0.4.7"
|
fst = "0.4.7"
|
||||||
fxhash = "0.2.1"
|
fxhash = "0.2.1"
|
||||||
|
geojson = "0.24.2"
|
||||||
geoutils = "0.5.1"
|
geoutils = "0.5.1"
|
||||||
grenad = { version = "0.5.0", default-features = false, features = [
|
grenad = { version = "0.5.0", default-features = false, features = [
|
||||||
"rayon",
|
"rayon",
|
||||||
|
@ -114,6 +114,7 @@ pub mod db_name {
|
|||||||
pub const FIELD_ID_DOCID_FACET_STRINGS: &str = "field-id-docid-facet-strings";
|
pub const FIELD_ID_DOCID_FACET_STRINGS: &str = "field-id-docid-facet-strings";
|
||||||
pub const VECTOR_EMBEDDER_CATEGORY_ID: &str = "vector-embedder-category-id";
|
pub const VECTOR_EMBEDDER_CATEGORY_ID: &str = "vector-embedder-category-id";
|
||||||
pub const VECTOR_ARROY: &str = "vector-arroy";
|
pub const VECTOR_ARROY: &str = "vector-arroy";
|
||||||
|
pub const CELLULITE: &str = "cellulite";
|
||||||
pub const DOCUMENTS: &str = "documents";
|
pub const DOCUMENTS: &str = "documents";
|
||||||
}
|
}
|
||||||
const NUMBER_OF_DBS: u32 = 25;
|
const NUMBER_OF_DBS: u32 = 25;
|
||||||
@ -182,6 +183,9 @@ pub struct Index {
|
|||||||
/// Vector store based on arroy™.
|
/// Vector store based on arroy™.
|
||||||
pub vector_arroy: arroy::Database<Unspecified>,
|
pub vector_arroy: arroy::Database<Unspecified>,
|
||||||
|
|
||||||
|
/// Geo store based on cellulite™.
|
||||||
|
pub cellulite: cellulite::Database,
|
||||||
|
|
||||||
/// Maps the document id to the document as an obkv store.
|
/// Maps the document id to the document as an obkv store.
|
||||||
pub(crate) documents: Database<BEU32, ObkvCodec>,
|
pub(crate) documents: Database<BEU32, ObkvCodec>,
|
||||||
}
|
}
|
||||||
@ -238,6 +242,7 @@ impl Index {
|
|||||||
let embedder_category_id =
|
let embedder_category_id =
|
||||||
env.create_database(&mut wtxn, Some(VECTOR_EMBEDDER_CATEGORY_ID))?;
|
env.create_database(&mut wtxn, Some(VECTOR_EMBEDDER_CATEGORY_ID))?;
|
||||||
let vector_arroy = env.create_database(&mut wtxn, Some(VECTOR_ARROY))?;
|
let vector_arroy = env.create_database(&mut wtxn, Some(VECTOR_ARROY))?;
|
||||||
|
let cellulite = env.create_database(&mut wtxn, Some(CELLULITE))?;
|
||||||
|
|
||||||
let documents = env.create_database(&mut wtxn, Some(DOCUMENTS))?;
|
let documents = env.create_database(&mut wtxn, Some(DOCUMENTS))?;
|
||||||
|
|
||||||
@ -266,6 +271,7 @@ impl Index {
|
|||||||
field_id_docid_facet_strings,
|
field_id_docid_facet_strings,
|
||||||
vector_arroy,
|
vector_arroy,
|
||||||
embedder_category_id,
|
embedder_category_id,
|
||||||
|
cellulite,
|
||||||
documents,
|
documents,
|
||||||
};
|
};
|
||||||
if this.get_version(&wtxn)?.is_none() && creation {
|
if this.get_version(&wtxn)?.is_none() && creation {
|
||||||
@ -1023,6 +1029,13 @@ impl Index {
|
|||||||
Ok(geo_filter)
|
Ok(geo_filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns true if the geo sorting feature is enabled.
|
||||||
|
pub fn is_geojson_enabled(&self, rtxn: &RoTxn<'_>) -> Result<bool> {
|
||||||
|
let geojson_filter =
|
||||||
|
self.filterable_attributes_rules(rtxn)?.iter().any(|field| field.has_geojson());
|
||||||
|
Ok(geojson_filter)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn asc_desc_fields(&self, rtxn: &RoTxn<'_>) -> Result<HashSet<String>> {
|
pub fn asc_desc_fields(&self, rtxn: &RoTxn<'_>) -> Result<HashSet<String>> {
|
||||||
let asc_desc_fields = self
|
let asc_desc_fields = self
|
||||||
.criteria(rtxn)?
|
.criteria(rtxn)?
|
||||||
@ -1842,6 +1855,7 @@ impl Index {
|
|||||||
field_id_docid_facet_strings,
|
field_id_docid_facet_strings,
|
||||||
vector_arroy,
|
vector_arroy,
|
||||||
embedder_category_id,
|
embedder_category_id,
|
||||||
|
cellulite: _,
|
||||||
documents,
|
documents,
|
||||||
} = self;
|
} = self;
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ pub use self::search::{
|
|||||||
};
|
};
|
||||||
pub use self::update::ChannelCongestion;
|
pub use self::update::ChannelCongestion;
|
||||||
|
|
||||||
pub type Result<T> = std::result::Result<T, error::Error>;
|
pub type Result<T, E = error::Error> = std::result::Result<T, E>;
|
||||||
|
|
||||||
pub type Attribute = u32;
|
pub type Attribute = u32;
|
||||||
pub type BEU16 = heed::types::U16<heed::byteorder::BE>;
|
pub type BEU16 = heed::types::U16<heed::byteorder::BE>;
|
||||||
|
Reference in New Issue
Block a user