mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-03 20:07:09 +02:00
Replace hardcoded string with constants
This commit is contained in:
parent
fc23a0ee52
commit
44eb153619
26 changed files with 160 additions and 132 deletions
|
@ -10,6 +10,7 @@ use roaring::{MultiOps, RoaringBitmap};
|
|||
use serde_json::Value;
|
||||
|
||||
use super::facet_range_search;
|
||||
use crate::constants::RESERVED_GEO_FIELD_NAME;
|
||||
use crate::error::{Error, UserError};
|
||||
use crate::heed_codec::facet::{
|
||||
FacetGroupKey, FacetGroupKeyCodec, FacetGroupValue, FacetGroupValueCodec, OrderedF64Codec,
|
||||
|
@ -501,7 +502,7 @@ impl<'a> Filter<'a> {
|
|||
}
|
||||
}
|
||||
FilterCondition::GeoLowerThan { point, radius } => {
|
||||
if filterable_fields.contains("_geo") {
|
||||
if filterable_fields.contains(RESERVED_GEO_FIELD_NAME) {
|
||||
let base_point: [f64; 2] =
|
||||
[point[0].parse_finite_float()?, point[1].parse_finite_float()?];
|
||||
if !(-90.0..=90.0).contains(&base_point[0]) {
|
||||
|
@ -530,13 +531,13 @@ impl<'a> Filter<'a> {
|
|||
Ok(result)
|
||||
} else {
|
||||
Err(point[0].as_external_error(FilterError::AttributeNotFilterable {
|
||||
attribute: "_geo",
|
||||
attribute: RESERVED_GEO_FIELD_NAME,
|
||||
filterable_fields: filterable_fields.clone(),
|
||||
}))?
|
||||
}
|
||||
}
|
||||
FilterCondition::GeoBoundingBox { top_right_point, bottom_left_point } => {
|
||||
if filterable_fields.contains("_geo") {
|
||||
if filterable_fields.contains(RESERVED_GEO_FIELD_NAME) {
|
||||
let top_right: [f64; 2] = [
|
||||
top_right_point[0].parse_finite_float()?,
|
||||
top_right_point[1].parse_finite_float()?,
|
||||
|
@ -663,7 +664,7 @@ impl<'a> Filter<'a> {
|
|||
} else {
|
||||
Err(top_right_point[0].as_external_error(
|
||||
FilterError::AttributeNotFilterable {
|
||||
attribute: "_geo",
|
||||
attribute: RESERVED_GEO_FIELD_NAME,
|
||||
filterable_fields: filterable_fields.clone(),
|
||||
},
|
||||
))?
|
||||
|
@ -689,6 +690,7 @@ mod tests {
|
|||
use maplit::hashset;
|
||||
use roaring::RoaringBitmap;
|
||||
|
||||
use crate::constants::RESERVED_GEO_FIELD_NAME;
|
||||
use crate::index::tests::TempIndex;
|
||||
use crate::Filter;
|
||||
|
||||
|
@ -899,7 +901,7 @@ mod tests {
|
|||
|
||||
index
|
||||
.update_settings(|settings| {
|
||||
settings.set_filterable_fields(hashset! { S("_geo") });
|
||||
settings.set_filterable_fields(hashset! { S(RESERVED_GEO_FIELD_NAME) });
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
|
@ -911,7 +913,7 @@ mod tests {
|
|||
"address": "Viale Vittorio Veneto, 30, 20124, Milan, Italy",
|
||||
"type": "pizza",
|
||||
"rating": 9,
|
||||
"_geo": {
|
||||
RESERVED_GEO_FIELD_NAME: {
|
||||
"lat": 45.4777599,
|
||||
"lng": 9.1967508
|
||||
}
|
||||
|
@ -922,7 +924,7 @@ mod tests {
|
|||
"address": "Via Dogana, 1, 20123 Milan, Italy",
|
||||
"type": "ice cream",
|
||||
"rating": 10,
|
||||
"_geo": {
|
||||
RESERVED_GEO_FIELD_NAME: {
|
||||
"lat": 45.4632046,
|
||||
"lng": 9.1719421
|
||||
}
|
||||
|
@ -945,8 +947,8 @@ mod tests {
|
|||
|
||||
index
|
||||
.update_settings(|settings| {
|
||||
settings.set_searchable_fields(vec![S("_geo"), S("price")]); // to keep the fields order
|
||||
settings.set_filterable_fields(hashset! { S("_geo"), S("price") });
|
||||
settings.set_searchable_fields(vec![S(RESERVED_GEO_FIELD_NAME), S("price")]); // to keep the fields order
|
||||
settings.set_filterable_fields(hashset! { S(RESERVED_GEO_FIELD_NAME), S("price") });
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
|
@ -995,8 +997,8 @@ mod tests {
|
|||
|
||||
index
|
||||
.update_settings(|settings| {
|
||||
settings.set_searchable_fields(vec![S("_geo"), S("price")]); // to keep the fields order
|
||||
settings.set_filterable_fields(hashset! { S("_geo"), S("price") });
|
||||
settings.set_searchable_fields(vec![S(RESERVED_GEO_FIELD_NAME), S("price")]); // to keep the fields order
|
||||
settings.set_filterable_fields(hashset! { S(RESERVED_GEO_FIELD_NAME), S("price") });
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ use self::graph_based_ranking_rule::Words;
|
|||
use self::interner::Interned;
|
||||
use self::vector_sort::VectorSort;
|
||||
use crate::index::PrefixSearch;
|
||||
use crate::constants::RESERVED_GEO_FIELD_NAME;
|
||||
use crate::localized_attributes_rules::LocalizedFieldIds;
|
||||
use crate::score_details::{ScoreDetails, ScoringStrategy};
|
||||
use crate::search::new::distinct::apply_distinct_rule;
|
||||
|
@ -863,12 +864,12 @@ fn check_sort_criteria(
|
|||
}
|
||||
.into());
|
||||
}
|
||||
Member::Geo(_) if !sortable_fields.contains("_geo") => {
|
||||
Member::Geo(_) if !sortable_fields.contains(RESERVED_GEO_FIELD_NAME) => {
|
||||
let (valid_fields, hidden_fields) =
|
||||
ctx.index.remove_hidden_fields(ctx.txn, sortable_fields)?;
|
||||
|
||||
return Err(UserError::InvalidSortableAttribute {
|
||||
field: "_geo".to_string(),
|
||||
field: RESERVED_GEO_FIELD_NAME.to_string(),
|
||||
valid_fields,
|
||||
hidden_fields,
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ use big_s::S;
|
|||
use heed::RoTxn;
|
||||
use maplit::hashset;
|
||||
|
||||
use crate::constants::RESERVED_GEO_FIELD_NAME;
|
||||
use crate::index::tests::TempIndex;
|
||||
use crate::score_details::ScoreDetails;
|
||||
use crate::search::new::tests::collect_field_values;
|
||||
|
@ -17,7 +18,7 @@ fn create_index() -> TempIndex {
|
|||
index
|
||||
.update_settings(|s| {
|
||||
s.set_primary_key("id".to_owned());
|
||||
s.set_sortable_fields(hashset! { S("_geo") });
|
||||
s.set_sortable_fields(hashset! { S(RESERVED_GEO_FIELD_NAME) });
|
||||
s.set_criteria(vec![Criterion::Words, Criterion::Sort]);
|
||||
})
|
||||
.unwrap();
|
||||
|
@ -68,12 +69,12 @@ fn test_geo_sort() {
|
|||
|
||||
index
|
||||
.add_documents(documents!([
|
||||
{ "id": 2, "_geo": { "lat": 2, "lng": -1 } },
|
||||
{ "id": 3, "_geo": { "lat": -2, "lng": -2 } },
|
||||
{ "id": 5, "_geo": { "lat": 6, "lng": -5 } },
|
||||
{ "id": 4, "_geo": { "lat": 3, "lng": 5 } },
|
||||
{ "id": 0, "_geo": { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, "_geo": { "lat": 1, "lng": 1 } },
|
||||
{ "id": 2, RESERVED_GEO_FIELD_NAME: { "lat": 2, "lng": -1 } },
|
||||
{ "id": 3, RESERVED_GEO_FIELD_NAME: { "lat": -2, "lng": -2 } },
|
||||
{ "id": 5, RESERVED_GEO_FIELD_NAME: { "lat": 6, "lng": -5 } },
|
||||
{ "id": 4, RESERVED_GEO_FIELD_NAME: { "lat": 3, "lng": 5 } },
|
||||
{ "id": 0, RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, RESERVED_GEO_FIELD_NAME: { "lat": 1, "lng": 1 } },
|
||||
{ "id": 6 }, { "id": 8 }, { "id": 7 }, { "id": 10 }, { "id": 9 },
|
||||
]))
|
||||
.unwrap();
|
||||
|
@ -100,12 +101,12 @@ fn test_geo_sort_around_the_edge_of_the_flat_earth() {
|
|||
|
||||
index
|
||||
.add_documents(documents!([
|
||||
{ "id": 0, "_geo": { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, "_geo": { "lat": 88, "lng": 0 } },
|
||||
{ "id": 2, "_geo": { "lat": -89, "lng": 0 } },
|
||||
{ "id": 0, RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, RESERVED_GEO_FIELD_NAME: { "lat": 88, "lng": 0 } },
|
||||
{ "id": 2, RESERVED_GEO_FIELD_NAME: { "lat": -89, "lng": 0 } },
|
||||
|
||||
{ "id": 3, "_geo": { "lat": 0, "lng": 178 } },
|
||||
{ "id": 4, "_geo": { "lat": 0, "lng": -179 } },
|
||||
{ "id": 3, RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": 178 } },
|
||||
{ "id": 4, RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": -179 } },
|
||||
]))
|
||||
.unwrap();
|
||||
|
||||
|
@ -177,11 +178,11 @@ fn geo_sort_mixed_with_words() {
|
|||
|
||||
index
|
||||
.add_documents(documents!([
|
||||
{ "id": 0, "doggo": "jean", "_geo": { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, "doggo": "intel", "_geo": { "lat": 88, "lng": 0 } },
|
||||
{ "id": 2, "doggo": "jean bob", "_geo": { "lat": -89, "lng": 0 } },
|
||||
{ "id": 3, "doggo": "jean michel", "_geo": { "lat": 0, "lng": 178 } },
|
||||
{ "id": 4, "doggo": "bob marley", "_geo": { "lat": 0, "lng": -179 } },
|
||||
{ "id": 0, "doggo": "jean", RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": 0 } },
|
||||
{ "id": 1, "doggo": "intel", RESERVED_GEO_FIELD_NAME: { "lat": 88, "lng": 0 } },
|
||||
{ "id": 2, "doggo": "jean bob", RESERVED_GEO_FIELD_NAME: { "lat": -89, "lng": 0 } },
|
||||
{ "id": 3, "doggo": "jean michel", RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": 178 } },
|
||||
{ "id": 4, "doggo": "bob marley", RESERVED_GEO_FIELD_NAME: { "lat": 0, "lng": -179 } },
|
||||
]))
|
||||
.unwrap();
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ use crate::update::{IndexDocumentsMethod, IndexerConfig, Settings};
|
|||
use crate::vector::EmbeddingConfigs;
|
||||
use crate::{db_snap, Criterion, Index};
|
||||
pub const CONTENT: &str = include_str!("../../../../tests/assets/test_set.ndjson");
|
||||
use crate::constants::RESERVED_GEO_FIELD_NAME;
|
||||
|
||||
pub fn setup_search_index_with_criteria(criteria: &[Criterion]) -> Index {
|
||||
let path = tempfile::tempdir().unwrap();
|
||||
|
@ -27,7 +28,7 @@ pub fn setup_search_index_with_criteria(criteria: &[Criterion]) -> Index {
|
|||
builder.set_filterable_fields(hashset! {
|
||||
S("tag"),
|
||||
S("asc_desc_rank"),
|
||||
S("_geo"),
|
||||
S(RESERVED_GEO_FIELD_NAME),
|
||||
S("opt1"),
|
||||
S("opt1.opt2"),
|
||||
S("tag_in")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue